java 三点求角度_从3个点检索正角度或负角度

本文讨论了如何在2D空间中根据鼠标位置的变化计算旋转角度的问题。特别是当鼠标移动方向需转换为逆时针旋转时,如何正确计算负角度的方法。

我在2D空间的中心点周围旋转点 . 这些点是中心点,旧鼠标位置和新鼠标位置 . 我的旋转功能工作正常,我可以完美地计算出角度 . 但是如果用户将鼠标移动到应该被解释为逆时针的方向,我想计算负角度 .

例如,如果您高于(小于)中心点的y值,则向右移动鼠标(正x轴)应顺时针旋转,但如果实际低于(大于),则应逆时针旋转中心点的y值 .

这就是我所拥有的:

PointF centerPoint;

PointF oldPoint;

PointF newPoint;

double Xc = centerPoint.X;

double Yc = centerPoint.Y;

double Xb = oldPoint.X;

double Yb = oldPoint.Y;

double Xa = newPoint.X;

double Ya = newPoint.Y;

double c2 = (Math.Pow(Xb - Xa, 2) + Math.Pow(Yb - Ya, 2));

double a2 = (Math.Pow(Xb - Xc, 2) + Math.Pow(Yb - Yc, 2));

double b2 = (Math.Pow(Xa - Xc, 2) + Math.Pow(Ya - Yc, 2));

double a = Math.Sqrt(a2);

double b = Math.Sqrt(b2);

double val = (a2 + b2 - c2) / (2 * a * b);

double angle = Math.Acos(val);

因此我需要一种方法在需要时使角度为负,因此点顺时针或逆时针旋转以跟随鼠标位置 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值