欢迎光临散文网 会员登陆 & 注册

【MCx几何】在MC中画出任意偏转角的图形【粒子特效基础】

2023-08-01 20:49 作者:On_craft  | 我要投稿

前言

如你所见,这篇文章将大概讲解一下如何将用粒子画出的图形进行旋转变换,专栏大多是代码,原理很简单,就是套一个公式而已

编程语言使用Java 18,其他语言也差不多 基本上都是数学计算

粒子生成使用ColorBlock模组,原版也差不多,就改下函数输出格式就行

(最低仅需高一知识就能写出来!)


准备工作

坐标的表达:

    x-y-z 分别对应游戏的三条坐标轴

公式:

    1.两点距离(欧式距离): d%3D%5Csqrt%7B(x_%7B1%7D-x_%7B2%7D)%5E2%2B(y_%7B1%7D-y_%7B2%7D)%5E2%2B(z_%7B1%7D-z_%7B2%7D)%5E2%7D%20

    2.罗德里格斯旋转公式: %5Cvec%7Bv'%7D%3D%5Cvec%7Bv%7D%5Ccos%5Ctheta%2B%5Cleft(1-%5Ccos%5Ctheta%5Cright)%5Cleft(%5Cvec%7Bk%7D%5Ccdot%20%5Cvec%7Bv%7D%5Cright)%5Cvec%7Bk%7D%2B%5Csin%5Ctheta%5Ccdot%5Cleft(%5Cvec%7Bk%7D%5Ctimes%5Cvec%7Bv%7D%5Cright)

一些工具类:


流程

1.定义

首先确定你要旋转的点和旋转中心, 比如 点A(x,y,z) 和 点O(0,0,0)

定义向量%5Cvec%7BOA%7D%20, 该向量也可以用一个点来表示, 记为点A' = %5Cvec%7BOA%7D%20 = (A.x - O.x, A.y - O.y, A.z - O.z)

当O点坐标在原点时,A'=A

2.确定旋转轴

确定要沿什么方向旋转,我将旋转分为了三次,分别绕x轴,y轴,z轴进行旋转 对应公式上的%5Cvec%7Bk%7D%20就是(1,0,0),(0,1,0),(0,0,1),%5Cvec%7Bv%7D%20就是A'

3.带入计算

这没什么好说的吧,把量带进去算就完事了 θ为旋转的角度

注意点: 旋转后对应的单位向量k也会随之旋转,在进行第2~n次旋转时需要前一次将之后旋转的k也进行旋转!

4.代码

这段的作用是用于旋转一个点A(x轴上旋转xr°,y轴上旋转yr°,x轴上旋转yr°)

这样就能让一个点进行旋转了,配合for和点列表/数组 可以实现整个图形的旋转

建议自己写代码,我这仅供参考,临时写的大概率没法直接运行

实例

生成一个带旋转角度的正方体框架:

效果

结尾

你已经学会了如何旋转图形,快去肝你的特效叭!

【MCx几何】在MC中画出任意偏转角的图形【粒子特效基础】的评论 (共 条)

分享到微博请遵守国家法律