matlab两线段的夹角,两条线段的夹角计算

夹角

double getAngle2(LineString lineString1, LineString lineString2) {

Point line1Start = lineString1.getStartPoint();

Point line1End = lineString1.getEndPoint();

Point line2Start = lineString2.getStartPoint();

Point line2End = lineString2.getEndPoint();

double dx1 = line1End.getX() - line1Start.getX();

double dy1 = line1End.getY() - line1Start.getY();

double dx2 = line2End.getX() - line2Start.getX();

double dy2 = line2End.getY() - line2Start.getY();

double angle1 = Math.atan2(dy1, dx1);

int angle1Int = (int) (angle1 * 180 / Math.PI);

double angle2 = Math.atan2(dy2, dx2);

int angle2Int = (int) (angle2 * 180 / Math.PI);

if (angle1 * angle2 >= 0) {

int abs = Math.abs(angle1Int - angle2Int);

if (abs > 90) {

return 180 - abs;

}

return abs;

} else {

double angle = Math.abs(angle1Int) + Math.abs(angle2Int);

if (angle > 180) {

angle = 360 - angle;

}

if (angle > 90) {

angle = 180 - angle;

}

return angle;

}

}

double getAngle(LineString lineString1, LineString lineString2) {

double angle1 = Angle.angle(lineString1.getStartPoint().getCoordinate(), lineString1.getEndPoint().getCoordinate());

double angle2 = Angle.angle(lineString2.getStartPoint().getCoordinate(), lineString2.getEndPoint().getCoordinate());

double diff = Angle.diff(angle1, angle2);

if (diff > Angle.PI_OVER_2) {

diff = Math.PI - diff;

}

return Angle.toDegrees(diff);

}

是否是锐角 点积

static double dot(LineString lineString1, LineString lineString2) {

double dx0 = lineString1.getEndPoint().getX() - lineString1.getStartPoint().getX();

double dy0 = lineString1.getEndPoint().getY() - lineString1.getStartPoint().getY();

double dx1 = lineString2.getEndPoint().getX() - lineString2.getStartPoint().getX();

double dy1 = lineString2.getEndPoint().getY() - lineString2.getStartPoint().getY();

return dx0 * dx1 + dy0 * dy1;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值