我想画一个3D Superformula网格,但不知道我应该如何组织这些面(它们是三角形或四边形)。如何绘制SuperShape3D作为网格?

我已经安装了八度并尝试了示例代码。我不知道Gnuplot的mesh()函数是如何工作的,但我想我会需要类似的东西。

的维基百科条目有一个链接到一个Processing demo。 我看了一下源代码,发现它只画出了点。 我试图在beginShape()/endShape() 调用中包装该代码段,但按我希望的方式工作。

我也试图检查点的数量是被3个整除 或4,使用三角形或四边形,但这不是要做到这一点, 正确的方式,你可以看到如下:

如何使用三角形/四边形绘制SuperShape3D? 我想象的顶点是在正确的位置,但他们 需要被分类到该提请使用 顶点索引的面孔电话。

我现在并不是固定在某种特定的语言上,但是我的目标是让顶点位于数组中,然后使用顶点索引推动面(3或4个点)。

任何提示?

更新:

这里是用在处理样品代码来获得积分功能:

import toxi.geom.*;

import controlP5.*;

ControlP5 controlP5;

ArrayList points = new ArrayList();

ArrayList faces = new ArrayList();

float a1=1,a2=1,b=1,xx,step = 0.05,yy,zz,n1=4,n2=12,n3=15,n4=15,r,raux1,r1,raux2,r2;

int N_X = int(2*PI/step);

int N_Y = int(PI/step);

void setup() {

size(800,800,P3D);

//hint(ENABLE_DEPTH_SORT);

controlP5 = new ControlP5(this);

controlP5.addSlider("a1value",0,3,1,20,0,200,10);

controlP5.addSlider("a2value",0,3,1,20,20,200,10);

controlP5.addSlider("bvalue",0,3,1,20,40,200,10);

controlP5.addSlider("n1value",0,20,8,20,60,200,10);

controlP5.addSlider("n2value",0,5,0.5,20,80,200,10);

controlP5.addSlider("n3value",0,5,0.5,20,100,200,10);

controlP5.addSlider("n4value",0,20,8,20,120,200,10);

controlP5.addSlider("stepvalue",0.02,0.9,0.05,20,140,200,10);

controlP5.setAutoDraw(false);

draw_super_formula();

}

void draw() {

background(0);

fill(255);

controlP5.draw();

lights();

translate(width/2, height/2, 0);

rotateX(mouseY * 0.01f);

rotateY(mouseX * 0.01f);

// connect 4 points into quads:

Vec3D pt;

for(int x=0;x

{

for(int y=0;y

{

beginShape(QUADS);

pt = (Vec3D)points.get(x*N_Y + y);

vertex(pt.x,pt.y,pt.z);

pt = (Vec3D)points.get(x*N_Y + y+1);

vertex(pt.x,pt.y,pt.z);

pt = (Vec3D)points.get((x+1)*N_Y + y+1);

vertex(pt.x,pt.y,pt.z);

pt = (Vec3D)points.get((x+1)*N_Y + y);

vertex(pt.x,pt.y,pt.z);

endShape();

}

}

}

void vertex(Vec3D v) {

vertex(v.x,v.y,v.z);

}

void draw_super_formula() {

for(int i = points.size()-1; i>0;i--){

points.remove(i);

}

for(int x=0;x

{

float i = -PI + x*step;

for(int y=0;y

{

float j = -PI/2.0 + y*step;

raux1=pow(abs(1/a1*abs(cos(n1*i/4))),n3)+pow(abs(1/a2*abs(sin(n1*i/4))),n4);

r1=pow(abs(raux1),(-1/n2));

raux2=pow(abs(1/a1*abs(cos(n1*j/4))),n3)+pow(abs(1/a2*abs(sin(n1*j/4))),n4);

r2=pow(abs(raux2),(-1/n2));

xx=r1*cos(i)*r2*cos(j)*100;

yy=r1*sin(i)*r2*cos(j)*100;

zz=r2*sin(j)*100;

Vec3D test1 = new Vec3D(xx,yy,zz);

points.add(test1);

}

}

}

void bvalue(float new_value){

b = new_value;

draw_super_formula();

}

void a1value(float new_value){

a1 = new_value;

draw_super_formula();

}

void a2value(float new_value){

a2 = new_value;

draw_super_formula();

}

void n1value(float new_value){

n1 = new_value;

draw_super_formula();

}

void n2value(float new_value){

n2 = new_value;

draw_super_formula();

}

void n3value(float new_value){

n3 = new_value;

draw_super_formula();

}

void n4value(float new_value){

n4 = new_value;

draw_super_formula();

}

void stepvalue(float new_value){

step = new_value;

draw_super_formula();

println("% 3: "+(points.size()%3));

println("% 4: "+(points.size()%4));

}

class F4{

int a,b,c,d;

F4(int a,int b,int c,int d){

this.a = a;

this.b = b;

this.c = c;

this.d = d;

}

}

@ tim_hutton的解决方案是伟大的,但它看起来索引断开,试图找出在那里。

android shape 3d效果,如何绘制SuperShape3D作为网格?相关推荐

  1. Android Camera 3D效果

    版本:1.0 日期:2014.4.14 版权:© 2014 kince 转载注明出处 一.概念 在Android中要想实现3D效果,第一个想到的应该就是OpenGL ES,因为在很多基础教材中几乎都提 ...

  2. android立体3D效果_Android实现八大行星绕太阳3D旋转效果

    code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群 作者:史蒂芬诺夫斯基链接:https://www.jianshu.com/p/2954f2ef8ea5声明:本文已获史 ...

  3. android立体3D效果_怀化400T吨龙门剪图纸3d模型_临沂1500T吨剪图纸原理图-皇宏液压...

    皇宏液压为您详细解读yddYIm怀化400T龙门剪图纸3d模型的相关知识与详情,   接触过超影3D印刷的伴侣们,想必必然对陈某们有所理解,超影3D印刷服务商拥有强大的3D印刷经历的团队,不单正在3D ...

  4. android立体3D效果_谷歌裸眼3D动物意外蹿红,掀起一股AR体验小高潮

    疫情在国外来势汹汹,越来越多人不得不长期待在家中.这个时候如果手指闲不住,不如试试在谷歌搜索中检索动物,就会有栩栩如生的 3D"动物"空降你家,而且其违和感已相较之前大大降低. 在 ...

  5. android立体3D效果_3D立体画手绘墙体彩绘

    由于绘画表现形式的丰富多样,因此,墙体彩绘也不再仅仅局限于单调的平面图案效果,逼真的3D立体画作为墙体彩绘的一种表现形式,它呈现出来的逼真立体效果被广大时尚有个性的客户所追捧.它能给予人们强大的视觉冲 ...

  6. android 卡片3d效果_小米发布伸缩镜头技术:卡片机失业,多摄下岗?

    11月5日消息,小米在今天的MIDC 2020小米开发者大会上,发布了自研的"伸缩式大光圈镜头技术".顾名思义,就是在手机上加入类似卡片相机的可伸缩镜头,从而达到多焦段的拍照效果, ...

  7. android立体3D效果_3D立体画,让你身临其境

    墙绘的出现,让墙面看起来更加美观,也提升了整面墙的美感度.从最开始的宗教墙绘,到现在的社区文化墙,家装彩绘,工装墙绘等等,其中有个具有独立风格的墙绘,以其逼真的效果被大众所熟知,那就是3D立体画. ​ ...

  8. android立体3D效果_PS教程:铝膜气球字制作的完整教程,3D立体效果字体的制作...

    这一篇主要是用PS做一种3D立体字体效果,铝膜气球字体,当然学会之后,举一反三,可以做成其他图案的铝膜气球效果. 铝膜气球在目前的各种庆典,婚庆,庆贺宴席上,用的比较普遍:这个字体效果,后期可以用于室 ...

  9. android立体3D效果_3D全息投影和平面投影有什么区别_广州全息投影

    随着时代的发展.科技的进步,3D全息投影已经融入到人们的日常生活当中,给人们带来全新的视觉体验,呈现亦真亦幻的虚拟影像世界,越来越多的行业肯定及选择全息投影技术.那么与传统的平面投影相比,3D全息投影 ...

最新文章

  1. Oracle 11G RAC:生产环境下架构
  2. 在不同浏览器中,input里面的输入光标大小表现形式却大不相同
  3. 程序员赴美经验谈:本科应届 Kevin - 弗罗里达州 Oracle
  4. 在ArcGIS中认识 Python工具箱
  5. mysql 两列互换
  6. 问君能有几多愁,恰似不懂Linux SQL如何调优——聊聊SQL Server on Linux最佳实践
  7. 当 Python 中混进一只薛定谔的猫……
  8. 【Joomla】Gallery 中的图片失去了 Popup 效果
  9. win10查询计算机ip和用户名和密码,Win10系统查询计算机IP子网掩码和默认网关设置教程...
  10. C#实现简单小说阅读器
  11. 【到世界的尽头win7主题】
  12. python求n的阶乘_python如何计算n的阶乘
  13. 苹果计算机开机进入安全模式,iphone进入安全模式及退出安全模式的方法
  14. Fuchsia Fundamentals
  15. 几个在线文档接口生成工具
  16. 一行Python代码去除照片背景
  17. 什么样的CTA策略组合最合理?
  18. 超时用集群脚本ync.sh、xcall.sh
  19. 4.16-4.18 transition-group动画(卡片排序),忍让,谦逊,前进。
  20. rot5/rot13/rot18/rot47

热门文章

  1. 关于sp_generate_inserts使用方法
  2. 15.3D效果,盒阴影和滤镜
  3. 小数(decimal,double) 截取两位或多位,不四舍五入
  4. nginx二进制编译-启动脚本编写
  5. 针对需要使用T3协议的Weblogic2628漏洞解决方案
  6. DevExpress xtraTabbedMdiManager控件双击关闭MDI标签页
  7. H.264的编解码流程
  8. web页面导出到Excel乱码解决
  9. linux中字体的安装以及Terminal字体重叠问题解决
  10. 【白皮书分享】2021中国女性婚恋观白皮书.pdf(附下载链接)