魔方旋转基础模型
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) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 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】