{/'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//n如果不是四维分形,改成四维分形函数内容:上述代码中的map函数并不是四维分形函数。四维分形通常涉及对四维空间中的点进行变换和计算,而上述代码中的map函数只涉及三维空间中的点坐标p,没有涉及第四维。要将其改成四维分形函数,需要增加对第四维坐标的处理。//n//n以下是一个可能的四维分形函数的示例://n//ncpp//nfloat4 csqr(float4 a) {//n return float4(//n a.x * a.x - a.y * a.y - a.z * a.z + a.w * a.w,//n 2. * (a.x * a.y + a.z * a.w),//n 2. * (a.x * a.z - a.y * a.w),//n 2. * (a.x * a.w + a.y * a.z)//n );//n}//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.zwxy;//n res += exp(-19. * abs(dot(p, c)));//n }//n//n return res / 2.;//n}//n//n//n这个示例中,csqr函数使用四维向量进行计算,并返回一个四维向量。map函数的输入参数从float3改为float4,表示四维空间中的点坐标。在循环中,对四维坐标进行变换和计算,保持四维性质。/

四维分形函数的实现与示例 - 如何将三维函数转换为四维分形

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

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