package main

import (
	"cicv-data-closedloop/pjisuv_msgs"
	"cicv-data-closedloop/pjisuv_param"
	"fmt"
	"math"
)

/*
   if obj_speed_dic is not {}:  #相邻两帧对于同一目标物速度变化率超过设定阈值
       if obj.id in obj_speed_dic:

           objspeed=pow(pow(obj.vxabs,2)+pow(obj.vyabs,2),0.5)
           diff_rate=abs(objspeed-obj_speed_dic[obj.id])/(obj_speed_dic[obj.id]+0.0001)
           if diff_rate>0.1 and objspeed>0.5 and obj_speed_dic[obj.id]>0.5:
               event_label='perceptionspeeddiffer'

               print(event_label)
               print(objspeed,"   ",obj_speed_dic[obj.id],"   ",diff_rate)
           else:
               print(objspeed,"   ",obj_speed_dic[obj.id],"   ",diff_rate)
*/

func Topic() string {
	return "/tpperception"
}

// Label todo 禁止存在下划线_
func Label() string {
	return "PerceptionSpeedDiffer"
}

func Rule(data *pjisuv_msgs.PerceptionObjects, param *pjisuv_param.PjisuvParam) string {
	defer func() {
		if r := recover(); r != nil {
			fmt.Println("Recovered from panic:", r)
		}
	}()
	for _, obj := range data.Objs {
		if len(param.ObjSpeedDicOfTpperception) != 0 {
			if _, exist := param.ObjSpeedDicOfTpperception[obj.Id]; exist {
				objSpeed := math.Pow(math.Pow(float64(obj.Vxabs), 2)+math.Pow(float64(obj.Vyabs), 2), 0.5)
				diffRate := math.Abs(objSpeed-param.ObjSpeedDicOfTpperception[obj.Id]) / (param.ObjSpeedDicOfTpperception[obj.Id] + 0.0001)
				if diffRate > 0.1 && objSpeed > 0.5 && param.ObjSpeedDicOfTpperception[obj.Id] > 0.5 {
					return "PerceptionSpeedDiffer"
				}
			}
		}
	}
	return ""
}