画圆去生成垂线
1. 过点A(若是中垂线则为线段中点)以任意半径画弧,交直线l于点B和点C
2:分别以点B和点C为圆心,半径为任意大于AB的线段作弧,并交于点D
3:连接AD作直线i,该直线I为直线l过点A的垂线
点在直线外时:
已知直线m和直线上一点E作过点E垂直于直线l的直线
1:以点E为圆心,任意大于点E到直线距离的长度为圆坐弧,交直线i于点F,G
2:以点F、G为圆心,任意大于线段EF长度一半的线段作弧,并交于点K
3:连接直线EK即是过点E垂直于直线L的直线
这个可以根据一步步的方法,利用halcon算子去得到中垂线
根据角度去计算垂线
1.得到线段的中点A、角度、长度
2. 通过角度计算得到中垂线的两点,生成即可得到中垂线
该方法的具体代码如下:
HTuple hv_RowCenter4 = null, hv_ColCenter4 = null;
HTuple hv_Length4 = null, hv_Phi4 = null;
HTuple hv_RowStart = null, hv_ColStart = null;
HTuple hv_RowEnd = null, hv_ColEnd = null;
HOperatorSet.LinePosition(hv_Row14, hv_Column14, hv_Row21, hv_Column21, out hv_RowCenter4,out hv_ColCenter4, out hv_Length4, out hv_Phi4);
HTuple hv_LineLength = hv_Length4;
//设定中垂线的长度,不除2则会是当前线段长度的两倍
hv_LineLength = hv_Length4 / 2;
//中垂线起点
hv_RowStart = hv_RowCenter4 - ((hv_Phi4.TupleCos()) * hv_LineLength);
hv_ColStart = hv_ColCenter4 - ((hv_Phi4.TupleSin()) * hv_LineLength);
//中垂线终点
hv_RowEnd = hv_RowCenter4 + ((hv_Phi4.TupleCos()) * hv_LineLength);
hv_ColEnd = hv_ColCenter4 + ((hv_Phi4.TupleSin()) * hv_LineLength);
//生成中垂线
HOperatorSet.GenRegionLine(out out_Line1, hv_RowStart, hv_ColStart, hv_RowEnd, hv_ColEnd);