小马算法 - 获取矩形区域的顶点坐标- 讲解
gen_rectangle2_contour_xld (Rectangle4, Row, Column, Phi, Length1, Length2) tuple_cos (Phi, Cos) tuple_sin (Phi, Sin) dev_set_color('green') RT_X := -Length1*Cos - Length2*Sin RT_Y := -Length1*Sin + Length2*Cos gen_circle (Circle, Row-RT_Y, Column+RT_X, 10) RB_X := Length1*Cos - Length2*Sin RB_Y := Length1*Sin + Length2*Cos gen_circle (Circle, Row-RB_Y, Column+RB_X, 10) LB_X := Length1*Cos + Length2*Sin LB_Y := Length1*Sin - Length2*Cos gen_circle (Circle, Row-LB_Y, Column+LB_X, 10) LT_X := -Length1*Cos + Length2*Sin LT_Y := -Length1*Sin - Length2*Cos gen_circle (Circle, Row-LT_Y, Column+LT_X, 10) 其中RT_X, RT_Y, RB_X, RB_Y, LB_X, LB_Y, LT_X, LT_Y求出的是距中心点的偏移量 顶点坐标可通过与矩形的中心坐标加减得到 如上面的函数gen_circle
利用坐标旋转,最终得到想要的结果
个可以通过如下原理的方法来求:
中心为(Row,Col),长半轴为width,短半轴为height。先将矩形顶点坐标换算到水平时候的坐标,中心点位置不变。为A(Row-
width,Col-height),B(Row+width,Col-height),C(Rol-
width,Col+height),D(Rol+width,Col+height)
然后将A,B,C,D点坐标进行一个theta角度的旋转变换就是你所求的四个顶点的坐标