四维分形函数实现:将三维分形扩展到四维空间
{"title":"下面map函数是图形学中的四维分形嘛,其中p是空间中的点坐标\n\n float2 csqr( float2 a ) { return float2( a.xa.x - a.ya.y, 2.a.xa.y ); }\n float map(in float3 p) {\n float res = 0.;\n \n float3 c = p;\n for (int i = 0; i < mapstep; ++i) {\n p =.7*abs(p)/dot(p,p) -.7; \n p.yz= csqr(p.yz);\n p=p.zxy;\n res += exp(-19. * abs(dot(p,c)));\n \n }\n return res/2.;\n }\n如果不是四维分形,怎么改成四维分形函数内容:上述代码中的map函数不是四维分形函数,而是一个用于生成分形形状的函数。要将其改成四维分形函数,可以添加一个额外的维度,例如通过将输入参数p从float3改为float4来实现。\n\n下面是修改后的代码:\n\ncpp\nfloat2 csqr(float2 a) { return float2(a.x * a.x - a.y * a.y, 2. * a.x * a.y); }\nfloat map(in float4 p) {\n float res = 0.;\n \n float4 c = p;\n for (int i = 0; i < mapstep; ++i) {\n p = .7 * abs(p) / dot(p, p) - .7;\n p.yzw = csqr(p.yzw);\n p = p.wxyz;\n res += exp(-19. * abs(dot(p, c)));\n }\n return res / 2.;\n}\n\n\n这样修改后的函数可以在四维空间中生成分形形状。
原文地址: https://www.cveoy.top/t/topic/p1OJ 著作权归作者所有。请勿转载和采集!