本帖最后由 hrabeyond 于 2010-01-07 11:34:57 编辑

解决方案 »

  1.   

    y=kx
    (x-x1)^2+(y-y1)^2=0
    k是指y/x,由此推出tanA=k,得出原始A是多少度.
    转B度后的度数为A+B
    k1=tan(A+B)
    推出方程
    y=k1x
    (x-x1)^2+(y-y1)^2=0
      

  2.   

    已知x1,y1,旋转度数C.求……解:
    y=tan(arctanc(y1/x1)+C) ①
    x^2+y^2=x1^2+y1^2 ②由②可得  y=±√(x1^2+y1^2-x^2) ③
    将③带入① 可得 x=……,y=……
      

  3.   

    呵呵, takako_mu数学很好嘛
    现在还不是答出来了?
      

  4.   

    private double[] GetXY(double x, double y, double c)
            {
                double[] result = new double[2];
                double jiaodu;//初始角度
                if (x == 0 && y == 0)
                {
                    MessageBox.Show("输入坐标有问题");
                    return null;
                }
                else if (x == 0 && y > 0)
                    jiaodu = 90;
                else if (x == 0 && y < 0)
                    jiaodu = 270;
                else if (y == 0 && x > 0)
                    jiaodu = 0;
                else if (y == 0 && x < 0)
                    jiaodu = 180;
                else
                    jiaodu = Math.Atan(y / x)*180/Math.PI;
                jiaodu += c;            
                double r = Math.Sqrt(x * x + y * y);           
                result[0] = Math.Cos(jiaodu / 180 * Math.PI) * r;//x
                result[1] = Math.Sin(jiaodu / 180 * Math.PI) * r;//y
                return result;
            }
    有误差
      

  5.   


    大侠,你这太高深了........全然看不懂啊...arctanc这是啥东西?
      

  6.   

    arctan是tan的反导.
    tan(60度)=√3
    arctan√3=60度
      

  7.   

    private double[] GetXY(double x, double y, double c)
            {
                double[] result = new double[2];
                double jiaodu;//初始角度
                if (x == 0 && y == 0)
                {
                    MessageBox.Show("输入坐标有问题");
                    return null;
                }
                else if (x == 0 && y > 0)
                    jiaodu = 90;
                else if (x == 0 && y < 0)
                    jiaodu = 270;
                else if (y == 0 && x > 0)
                    jiaodu = 0;
                else if (y == 0 && x < 0)
                    jiaodu = 180;
                else
                    jiaodu = Math.Atan(y / x)*180/Math.PI;
                jiaodu += c;            
                double r = Math.Sqrt(x * x + y * y);           
                result[0] = Math.Cos(jiaodu / 180 * Math.PI) * r;//x
                result[1] = Math.Sin(jiaodu / 180 * Math.PI) * r;//y
                return result;
            }
      

  8.   

    看了这个贴,一种数学上的优越感油然而生,但我拒绝回答问题,哈哈!
    对.net不熟悉,弱弱的问下各位大牛,.net中精度会丢失么。
      

  9.   

    假设新得到得坐标为(m,n)则有:
    m*m + n*n = x*x + y*y;n/m = (y/x + tanC)/(1 - y/x*tanc);已知了 x y c 求 m n ;2未知数,2个等式可以确定唯一解;
      

  10.   


    namespace System.Drawing
    {
        public struct Point
        {
            public Point(int x, int y);
        }
    }
      

  11.   


    是啊,但是用C#画出来的话还是要用Point这个东西啊...
      

  12.   

    汗,这个很简单的啊。你想啊,已知2个点,(0,0),(x,y),和一个角度α假设求的那个点是(a,b)然后锐角三角函数公式
      sin α=∠α的对边 / 斜边
      cos α=∠α的邻边 / 斜边
      tan α=∠α的对边 / ∠α的邻边
      cot α=∠α的邻边 / ∠α的对边
    我想应该可以了吧。
      

  13.   

    http://www.cppblog.com/guijie/archive/2009/03/16/76766.html
      

  14.   

    前段时间搞过图片旋转算法 
    坐标对应是
    newX = X*cos(c) + Y* sin(c);
    newY = -X*sin(c) + Y*cos(c);
    C是顺时针还是逆时针记得不太清了 自己试试看吧
      

  15.   

    这个是个游戏里经常用到的旋转算法
    x=x1*cos(a)-y1*sin(a);
    y=x1*sin(a)+y1*cos(a);
    a为角度
    x1、y1为起始点
    x、y为起始点旋转a角度后的值