魔方旋转基础模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//魔方旋转基础模型
class Point{
    constructor(x,y,z){
        this.mapData={
            0:[1,0],
            45:[1,1],
            90:[0,1],
            135:[-1,1],
            180:[-1,0],
            225:[-1,-1],
            270:[0,-1],
            315:[1,-1],
        }
        this.oriData=[x,y,z,1,1,1]
 
    }
    //向量转值
    getAngle(x,y){
       for(let k in this.mapData){
           const arr=this.mapData[k]
           if(x==arr[0]&&y==arr[1]){
               return Number(k);
           }
       }
    }
    //获取向量
    getPoint(angle){
        while(angle<0){
            angle=angle+360
        }
        return this.mapData[angle];
    }
    //沿x轴旋转
    translateX(angle){
 
        const [x,y,z,xp,yp,zp]=this.oriData
        const ag1=this.getAngle(y,z);
        const [y2,z2]=this.getPoint(angle+ag1)
 
        const ag2=this.getAngle(yp,zp)
        const [yp2,zp2]=this.getPoint(angle+ag2)
 
        this.oriData=[x,y2,z2,xp,yp2,zp2]
 
    }
    //沿y轴旋转
    translateY(angle){
        const [x,y,z,xp,yp,zp]=this.oriData
        const ag1=this.getAngle(z,x);
        const [z2,x2]=this.getPoint(angle+ag1)
 
        const ag2=this.getAngle(zp,xp)
        const [zp2,xp2]=this.getPoint(angle+ag2)
 
        this.oriData=[x2,y,z2,xp2,yp,zp2]
    }
    //沿z轴旋转
    translateZ(angle){
        const [x,y,z,xp,yp,zp]=this.oriData
        const ag1=this.getAngle(x,y);
        const [x2,y2]=this.getPoint(angle+ag1)
 
        const ag2=this.getAngle(xp,yp)
        const [xp2,yp2]=this.getPoint(angle+ag2)
 
        this.oriData=[x2,y2,z,xp2,yp2,zp]
    }
}
const p1=new Point(1,0,1)
p1.translateX(90)
console.log(p1.oriData)

  

posted @   无工时代  阅读(229)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示