gpt4 book ai didi

c# - 从 3 个点检索正角或负角

转载 作者:太空狗 更新时间:2023-10-29 22:27:50 25 4
gpt4 key购买 nike

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

例如,如果您高于(小于)中心点的 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);

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

最佳答案

试试这个,但我不确定:

double v1x = Xb - Xc;
double v1y = Yb - Yc;
double v2x = Xa - Xc;
double v2y = Ya - Yc;

double angle = Math.Atan2(v1x, v1y) - Math.Atan2(v2x, v2y);

关于c# - 从 3 个点检索正角或负角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9022563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com