{/'title/':/'下面这段map函数的代码是图形学中的四维分形嘛,其中p是空间中的点坐标//n float2 csqr( float2 a ) { return float2( a.xa.x - a.ya.y, 2.a.xa.y ); }//n//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如果不是四维分形,怎么改成四维分形函数内容:上面的代码并不是四维分形函数,而是一个用于生成二维分形的函数。要将其修改为四维分形函数,需要对代码进行适当的修改。//n//n以下是一个可能的四维分形函数的修改版本://n//ncpp//nfloat4 csqr( float4 a ) { return float4( a.x*a.x - a.y*a.y - a.z*a.z + a.w*a.w, 2.*a.x*a.y + 2.*a.z*a.w, 2.*a.x*a.z - 2.*a.y*a.w, 2.*a.x*a.w + 2.*a.y*a.z ); }//n//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 }//n return res/2.;//n}//n//n//n在这个修改后的代码中,函数csqr的参数类型从float2改为了float4,并且返回值类型也改为了float4。这样可以处理四维坐标。//n//n函数map的参数类型也从float3改为了float4,并且在循环中的操作也相应地改为了四维操作。/

四维分形函数代码示例:利用csqr函数生成四维分形

原文地址: https://www.cveoy.top/t/topic/p1Oz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录