C#怎么快速求出三点之间的夹角

muyebo 2009-12-30 03:45:36
在二维下,比如定点pt1,求另两点与之连线的夹角(顺时针角度为正)。
...全文
1560 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuzhenpolestar 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 momo400 的回复:]

C# code

public static float Angle(Point cen, Point first, Point second)
{
float dx1, dx2, dy1, dy2;
float angle;

dx1 = first.X - cen.X;
……
[/Quote]

好强大 拜读了!!
zhang_zdx 2011-01-25
  • 打赏
  • 举报
回复
怎么我按照以上2种方法,结果都不是完全正确啊
ZMAK_Chun 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 momo400 的回复:]
C# codepublicstaticfloat Angle(Point cen, Point first, Point second)
{float dx1, dx2, dy1, dy2;float angle;

dx1= first.X- cen.X;
dy1= first.Y- cen.Y;

?-
[/Quote]
数学问题~~~
zhoujk 2010-01-03
  • 打赏
  • 举报
回复
补充一下 用那个双线性插值的资源
zhoujk 2010-01-03
  • 打赏
  • 举报
回复
到我的空间去下一下,图像旋转的代码,然后仔细看一下。不过你没法直接用。
我给你说个方法:将其它三个点减去顶点的坐标,然后分别计算顶点/端点 到平面直角坐标系的Y轴正方向的角度(这段代码可以从我的函数中得到)。后面的事就不用我说了吧。没有现成的函数,只能自己写,
flyerwing 2009-12-31
  • 打赏
  • 举报
回复
有个公式表正成程序就好了吧
hhc123 2009-12-31
  • 打赏
  • 举报
回复
public struct Point
{
public double x;
public double y;
public double z;
}
public static class Angle
{
public static double[] getAllAngle(Point a, Point b, Point c)
{
double[] result = new double[3];
result[0] = getIntersectionAngle(b, c, a);
result[1] = getIntersectionAngle(a, c, b);
result[2] = getIntersectionAngle(a, b, c);
return result;
}

public static double getIntersectionAngle(Point a, Point b, Point Intersection)
{
Point tempPoint1 = new Point { x = Intersection.x - a.x, y = Intersection.y - a.y, z = Intersection.z - a.z };
Point tempPoint2 = new Point { x = Intersection.x - b.x, y = Intersection.y - b.y, z = Intersection.z - b.z };

double temp = tempPoint1.x * tempPoint2.x + tempPoint1.y * tempPoint2.y + tempPoint1.z * tempPoint2.z;
double temp2 = Math.Sqrt(Math.Pow(tempPoint1.x, 2) + Math.Pow(tempPoint1.y, 2) + Math.Pow(tempPoint1.z, 2));
double temp3 = Math.Sqrt(Math.Pow(tempPoint2.x, 2) + Math.Pow(tempPoint2.y, 2) + Math.Pow(tempPoint2.z, 2));
double tempCos = temp / (temp2 * temp3);
double result = Math.Acos(tempCos);

return Math.Round(((180 * result) / Math.PI),1);
}
}

//调用类库:
Point a = new Point { x = 0, y = 0, z = 0 };
Point b = new Point { x = 0, y = 2, z = 0 };
Point c = new Point { x = 0, y = -1, z = Math.Sqrt(3) };
double[] result = Angle.getAllAngle(a, b, c);
Console.WriteLine(string.Format("a:{0}度, b:{1}度, c:{2}度", result[0], result[1], result[2]));
Console.Read();
mowensky 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 momo400 的回复:]

public static float Angle(Point cen, Point first, Point second)
        {
            float dx1, dx2, dy1, dy2;
            float angle;

            dx1 = first.X - cen.X;
            dy1 = first.Y - cen.Y;

            dx2 = second.X - cen.X;

            dy2 = second.Y - cen.Y;

            float c = (float)Math.Sqrt(dx1 * dx1 + dy1 * dy1) * (float)Math.Sqrt(dx2 * dx2 + dy2 * dy2);

            if (c == 0) return -1;

            angle = (float)Math.Acos((dx1 * dx2 + dy1 * dy2) / c);


            return angle;
        }


[/Quote]

收下了
hhc123 2009-12-31
  • 打赏
  • 举报
回复

S△=√[s*(s-a)*(s-b)*(s-c)] 【s=1/2(a+b+c)】
S△=1/2*ah
得出底所对应的高
知道一条边的长
又知道了高
角度出来了吧

足球中国 2009-12-31
  • 打赏
  • 举报
回复
system.math里没有这个函数嘛。没有的电MS让他加上吧。
特别 2009-12-31
  • 打赏
  • 举报
回复
可能要先判断一下三点是否在同一直线上
vssvss 2009-12-31
  • 打赏
  • 举报
回复
知道3边可以求出任意一个角 知道3个点的坐标也可以求出任意角
hello_lijingpan 2009-12-31
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yuwenge 的回复:]
有一个初中没毕业来写程序的
[/Quote]

在说我吗?
郁闷,只上过初中二年级就缀学了
cnzdgs 2009-12-31
  • 打赏
  • 举报
回复
分别求出两条边相对于某一坐标轴的夹角再相减(例如相对于x轴夹角的正切值是(y2-y1)/(x2-x1),注意分母为0的情况)。
muyebo 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yuwenge 的回复:]
有一个初中没毕业来写程序的
[/Quote]
会就写一下,不会就算了,装逼遭雷劈,草
michaelnami 2009-12-30
  • 打赏
  • 举报
回复
难道没有数学公式可以套用吗 三角函数都定义好了的
卧_槽 2009-12-30
  • 打赏
  • 举报
回复
有一个初中没毕业来写程序的
kensouterry 2009-12-30
  • 打赏
  • 举报
回复
线性方程,然后调用数学函数咯!当然要先参考一下数学书先,放心,三个点只要两两不重合,打死了也在一个平面内!(公理啊)
呵呵……
bwangel 2009-12-30
  • 打赏
  • 举报
回复
这其实是一个数学问题,公式忘记了.
加载更多回复(5)
目录 ㈠ 点的基本运算 1. 平面上两点之间距离 1 2. 判断两点是否重合 1 3. 矢量叉乘 1 4. 矢量点乘 2 5. 判断点是否在线段上 2 6. 求一点饶某点旋转后的坐标 2 7. 求矢量夹角 2 ㈡ 线段及直线的基本运算 1. 点与线段的关系 3 2. 求点到线段所在直线垂线的垂足 4 3. 点到线段的最近点 4 4. 点到线段所在直线的距离 4 5. 点到折线集的最近距离 4 6. 判断圆是否在多边形内 5 7. 求矢量夹角余弦 5 8. 求线段之间夹角 5 9. 判断线段是否相交 6 10.判断线段是否相交但不交在端点处 6 11.求线段所在直线的方程 6 12.求直线的斜率 7 13.求直线的倾斜角 7 14.求点关于某直线的对称点 7 15.判断两条直线是否相交及求直线交点 7 16.判断线段是否相交,如果相交返回交点 7 ㈢ 多边形常用算法模块 1. 判断多边形是否简单多边形 8 2. 检查多边形顶点的凸凹性 9 3. 判断多边形是否凸多边形 9 4. 求多边形面积 9 5. 判断多边形顶点的排列方向,方法一 10 6. 判断多边形顶点的排列方向,方法二 10 7. 射线法判断点是否在多边形内 10 8. 判断点是否在凸多边形内 11 9. 寻找点集的graham算法 12 10.寻找点集凸包的卷包裹法 13 11.判断线段是否在多边形内 14 12.求简单多边形的重心 15 13.求凸多边形的重心 17 14.求肯定在给定多边形内的一个点 17 15.求从多边形外一点出发到该多边形的切线 18 16.判断多边形的核是否存在 19 ㈣ 圆的基本运算 1 .点是否在圆内 20 2 .求不共线的三点所确定的圆 21 ㈤ 矩形的基本运算 1.已知矩形三点坐标,求第4点坐标 22 ㈥ 常用算法的描述 22 ㈦ 补充 1.两圆关系: 24 2.判断圆是否在矩形内: 24 3.点到平面的距离: 25 4.点是否在直线同侧: 25 5.镜面反射线: 25 6.矩形包含: 26 7.两圆交点: 27 8.两圆公共面积: 28 9. 圆和直线关系: 29 10. 内切圆: 30 11. 求切点: 31 12. 线段的左右旋: 31 13.公式: 32
计算几何 目录 ㈠ 点的基本运算 1. 平面上两点之间距离 1 2. 判断两点是否重合 1 3. 矢量叉乘 1 4. 矢量点乘 2 5. 判断点是否在线段上 2 6. 求一点饶某点旋转后的坐标 2 7. 求矢量夹角 2 ㈡ 线段及直线的基本运算 1. 点与线段的关系 3 2. 求点到线段所在直线垂线的垂足 4 3. 点到线段的最近点 4 4. 点到线段所在直线的距离 4 5. 点到折线集的最近距离 4 6. 判断圆是否在多边形内 5 7. 求矢量夹角余弦 5 8. 求线段之间夹角 5 9. 判断线段是否相交 6 10.判断线段是否相交但不交在端点处 6 11.求线段所在直线的方程 6 12.求直线的斜率 7 13.求直线的倾斜角 7 14.求点关于某直线的对称点 7 15.判断两条直线是否相交及求直线交点 7 16.判断线段是否相交,如果相交返回交点 7 ㈢ 多边形常用算法模块 1. 判断多边形是否简单多边形 8 2. 检查多边形顶点的凸凹性 9 3. 判断多边形是否凸多边形 9 4. 求多边形面积 9 5. 判断多边形顶点的排列方向,方法一 10 6. 判断多边形顶点的排列方向,方法二 10 7. 射线法判断点是否在多边形内 10 8. 判断点是否在凸多边形内 11 9. 寻找点集的graham算法 12 10.寻找点集凸包的卷包裹法 13 11.判断线段是否在多边形内 14 12.求简单多边形的重心 15 13.求凸多边形的重心 17 14.求肯定在给定多边形内的一个点 17 15.求从多边形外一点出发到该多边形的切线 18 16.判断多边形的核是否存在 19 ㈣ 圆的基本运算 1 .点是否在圆内 20 2 .求不共线的三点所确定的圆 21 ㈤ 矩形的基本运算 1.已知矩形三点坐标,求第4点坐标 22 ㈥ 常用算法的描述 22 ㈦ 补充 1.两圆关系: 24 2.判断圆是否在矩形内: 24 3.点到平面的距离: 25 4.点是否在直线同侧: 25 5.镜面反射线: 25 6.矩形包含: 26 7.两圆交点: 27 8.两圆公共面积: 28 9. 圆和直线关系: 29 10. 内切圆: 30 11. 求切点: 31 12. 线段的左右旋: 31 13.公式: 32

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧