猫史档案馆


以参数方程作球(大佬勿喷)

用户:Ezra__Ezra__查看:0 回复:9 评论:0 创建时间:2023-01-24T10:24:12


看前须知:球的一般方程:(x-x0)^2+(y-y0)^2+(z-z0)^2=r^2

/*球的参数方程:
x=x0+r·sinθcosφ
y=y0+r·sinθsinφ
z=z0+r·cosθ
(其中θ∈[0,2π],是方位角;φ∈[0,π],是仰角)
可以像画圆一样用参数方程做球
*/
function sphere(x, y, z, r, voxel, acc, solid) {//分别对应球心坐标(x, y, z),半径r,方块v,精度acc(取值建议0.5)),是否实心solid
    if (r <= 0) return;
    for (let theta = 0; theta <= 360; theta += acc) {//遍历θ值
        for (let phi = 0; phi <= 180; phi += acc) {//遍历φ值
            let radth = (theta * Math.PI) / 180,//转弧度制
                radph = (phi * Math.PI) / 180;//转弧度制
            voxels.setVoxel(//套公式
                Math.round(x + r * Math.sin(radth) * Math.cos(radph)),
                Math.round(y + r * Math.sin(radth) * Math.sin(radph)),
                Math.round(z + r * Math.cos(radth)),
                voxel
            )
        }
    }
    if (solid) {//以递归的思路作实心球
        sphere(x, y, z, r - 1, voxel, acc, solid);
    }
}
sphere(16,16,16,16,127,1,false);//示例:做一个球心坐标(16, 16, 16),半径16,方块编号127,精度为1的空心球

大佬勿喷,大佬勿喷,大佬勿喷


回复

上一页1 页 / 共 1下一页
望柒望柒

…………………………………………,什么……………………………………玩意??????(一脸蒙圈)

点赞0


评论


浮生awa浮生awa

球的标准方程为 (x-a)²+(y-b)²+(z-c)²=r²

这个看的更清楚一点)

点赞0


评论


星空·之夜星空·之夜

ez你在哪)))

点赞0


评论


被遗忘的屑被遗忘的屑

666~

点赞0


评论


NeutrophilsNotNeutrophilsNot

666

点赞0


评论


烟魂烟魂

芜湖(笑

点赞0


评论


仙之鹤仙之鹤

dddd

点赞0


评论


Ezra__Ezra__

tips:将theta的范围改成[π,2π]可以画半圆

点赞0


评论


编码喵编码喵

666

点赞0


评论