[理论向]MC画正切函数图像!
首先画图像之前我们要知道图像到底是怎么产生的?


单位圆上一点B绕O1旋转两点确定一条直线O1B,直线O1B交直线AT于T,线段AT即为正切线,直线O1B于直线AT的交点会随着B点横坐标的变化而变化,随着x的变化,y值也变化,x,y确定一点(在图里表现为将点平移)无数对应的点用平滑的曲线连接形成正切图像。
那么怎样用be指令在mc里画出这种图像?
【温馨提示:两种方法我都没画出来不过理论上可行,需要function写一堆,没那么多时间,见谅见谅,原理还是挺有意思的】
一种方法是用单位圆画,另一种方法是泰勒展开画
我先说单位圆画法
这种方法的大概原理就是用一个盔甲架A代表O1点,另一个盔甲架B代表B点,盔甲架A自旋360度,盔甲架B始终面向它沿着单位圆轨迹旋转,利用二分法测出盔甲架B的坐标,通过计算算出直线O1B和直线AT交点的坐标,将盔甲架C传送到y轴对应位置,同时释放雪球形成一个点,无数个按照此原理形成的雪球点一连就是正切图像,只不过这种图像是水平移动的,严格来说这是正切波。
其中需要注意的有几点:
1.mc里y轴表示纵向高度,x轴和z轴表示水平距离。

将其旋转为我们希望看到的样子显然A点的纵坐标x是正弦值,横坐标z是余弦值.

正弦值即为改点的纵坐标的除以横坐标,也就是x坐标除以z坐标
2.二分法的利用
利用盔甲架B距离原点的朝向测出盔甲架B点的坐标(facing entity)
如果盔甲架B的坐标是3,-60,10那么测出的正弦值即为3余弦值即为10,其正切值通过计算为0(计分板只显示整数), 如何保留小数点后几位呢这就要考虑到精度问题,这是计算精度考虑的事,比如想要小数点后一位那么就将3*10/1为3但我们默认是0.3(除以10),二是测量精度的问题,如果想要坐标测的更精准比如盔甲架B精确到小数点后一位的坐标为3.2,-60.2,10.3那么在用二分法测坐标时添加的不再是2,4,8,16...而是20,40,80,160...,添加2,4,8,16的条件从^^^2,^^^4,^^^8,^^^16变为^^^0.2,^^^0.4,^^^0.8,^^^1.6,据此原来测出的x值为8那么它的坐标就是8现在测出的x值为82那么它的坐标就是8.2,正弦值扩大10倍余弦值正切值不变。
例:按原来方法测量盔甲架B的坐标(3,-60,11)显示正切值0,实际正切值0.2727循环
提升计算精度3*100/11=27(显示正切值)实际上正切值为0.27这样就做到了精确到小数点后两位
提升测量精度和计算精度盔甲架B的坐标为(3.3,-60,11.5) 测量精度扩大10倍,显示正弦值为33,余弦值为115,提升计算精度33*100/115=28(显示正切值)这样算出来的将更精确。
也就是说在基于坐标不变的情况下,乘10的倍数再除以除数,数值扩大10倍,然后再自行脑补(除以10)这样就做到了精确小数点后一位。
其次就是分数转坐标分两步一步检测分数在哪两个二分数之间传送到相应二分数的位置比如检测到它的正切值为28检测到在16到32之间,传送其到~-16 -60 0的位置(直线O1B和y轴交点位置,因为z为0,在mc里体现是和x轴交点)第二步扣除其分数,一次类推。
3.雪球移速问题这个我实在不想写了看上篇去吧。
第二种是泰勒展开画轨迹
原理:给正切展开,算出相应的值,分数转坐标,让盔甲架沿着算出的坐标运动,将盔甲架隐身,释放粒子效果,也需要function,直接画出轨迹,随着时间推移粒子效果也会消失,这和单位圆法不一样。这种纯算数可以画很多图像,很多大佬也画过,不再赘述。

(都看到这里,这点东西写的我也是头疼,我试了很多遍也没画出来,主要是点太少了我也没那么时间搞,巴拉巴拉,再见awa.)