场景中  三个以上 三角形,
怎么实现 只控制一个三角形围着其一个顶点旋转,而其他三角形保持不变!初步思路:
1.通过目标三角形坐标变化控制,但实现好像有点难,  如何将  旋转角度 设置为参数,2.视角坐标系变化, 如此 导致 其他三角形也转动!!  无法实现其他方法暂时没有一点思路~~

解决方案 »

  1.   

    //方法如下:
      float x1,y1,x2,y2,x3,y3;//三个顶点坐标
      float len12,len13,len23;//三边长度
      float th12,th13,th23;   //三个夹角
      float th;               //旋转角度
      
      //这里请赋初始值,并计算长度和夹角;
      
      //假设围绕x1,y1转
      for(th=0;th<6.28;th+=0.00314)
      {
           x2=x1+len12*cos(th);
           y2=y1+len12*sin(th);
           x3=x1+len13*cos(th+th12);
           x3=y1+len13*sin(th+th12);       //按新计算的数据画三角形
       }//QQ:7199963
      

  2.   


    这个方法是不是太麻烦了,
    如果是一个 多边形 不是三角形,运算量岂不是很大? 
    而且 主要是 设置的参数就是  3n 个变量~~想想 能不能简化 ,得到同样的效果~~我先试试,谢谢gz~~
      

  3.   

    楼主注意:
    我上边的循环是演示了旋转一周的动态过程,是动画的
    如果只旋转一个固定角度,直接让th=xxx就行了,不用循环当涉及到很多点的时候包括不规则图像等计算的原理是差不多的.
    但数据多的时候,其实是把所有数据形成一个矩阵,直接用矩阵运算
      

  4.   

    是的,是图形学的问题
    这种计算旋转点的方法其实是极坐标的表示方法。比如:(x0,y0)为圆心,r为半径。
    圆的方程是:(x-x0)*(x-x0)+(y-y0)*(y-y0)=r*r;
    这样表示很难画圆某点相对与(x0,y0)的距离是r
    则该点的极坐标是:
    x=x0+r*cos(th);
    y=y0+r*sin(th);
    当th从0到6.28每格一个角度画一个点,不就是圆了吗?
    这其实就是旋转的原理。