画箭头

 $Xexit=trim($exit[0]);     //始点x坐标

                        $Yexit=trim($exit[1]);     //始点Y坐标
                        $Xenter=trim($enter[0]); //终点X坐标
                        $Yenter=trim($enter[1]); //终点Y坐标
                        imageline($im,$Xexit,$Yexit,$Xenter,$Yenter,$green);  //画根线
                        if($Yexit == $Yenter)         
                        {
                                if($Xexit < $Xenter)    $included = 0;
                                else    $included = 180;
                        }
                        else if($Xexit == $Xenter)
                        {
                                if($Yexit < $Yenter)    $included = 270;
                                else    $included = 90;
                        }
                        else
                        {
                                $slope=($Yenter - $Yexit)/($Xenter - $Xexit);
                                $included=atan($slope)*(180/$PI);
                                if($Yexit < $Yenter)    $included += 180;   //终点在下,可以确定这时角度应该等于180+斜率.
                        }
                                               // 确定那跟直线的角度.   
                                              //因为斜率只能是0-180度.所以就一点点的判断了.
                        $Xpoint = (int)(($Xenter*7 + $Xexit)/8);  //找出直线的某个位置用来画箭头用 X.坐标
                        $Ypoint = (int)(($Yenter*7 + $Yexit)/8);  //找出直线的某个位置用来画箭头用 Y.坐标
                        $XpointUP = $Xpoint + (int)(cos($included + 45)*10);     //把那跟直线旋转45度后的X坐标 ,10是那个箭头的长度.                 
                        $YpointUP = $Ypoint + (int)(sin($included + 45 )*10);      //把那跟直线旋转45度后的Y坐标     
                        ImageLine($im,$XpointUP,$YpointUP,$Xpoint,$Ypoint,$green);  //画线.....    

画出来的线很乱,没有旋转45度后的效果.  
我这个是什么地方出错了啊???? 

谢谢大家指点 



看图b,可以看到还是我的位置没有确定对.. 
是坐标系的转换问题引起的吗?? 
数学中有 1 , 2 ,3 ,4象限,对应的cos和sin会有正负,而计算机中的这个是以角为基准.不断增大的.就象是第一象限以x轴为中线画的对称图形,向下递增.

posted on 2014-11-24 14:33  易佰店  阅读(167)  评论(0编辑  收藏  举报

导航