От 2D до 3D рисунка - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь сделать 3D-рисунок, все, что я получил, это рисовать в 2D, как вы увидите в моем коде ниже, я пытаюсь получить линии, нарисованные в 3D, с глубиной, но я могу не найти способ сделать это без использования коробок или уже 3D фигур, которые не двигаются вообще. Вот мой код:

import peasy.*;    
static final int Lin =100;

//Loop Vintage
float t;
int x,y,z,a,b,c;

//Camera 3D
PeasyCam cam;

void setup ()
{
  background(20);
  size(800,600, P3D);
  //Distance of Camera
  cam = new PeasyCam(this, 1000);
}

void draw()
{
  background(0);
  stroke(255);
  strokeWeight(1);

   //Loop Vintage
  Floop();  
}

void Floop()
{ pushMatrix();
  translate(CENTER,CENTER,CENTER);
  rotate(0);
  for(x=0;x<Lin; x++)
    line(x1(t+x),y1(t+x),x2(t+x),y2(t+x)); 
  popMatrix();
  t++;
}

//Loop Vintage
float x1(float t)
{
  return sin(t/10) * 100 + sin(t/5) * 20;
}
float y1(float t)
{
  return cos(t/10) * 100;
}
float x2(float t)
{
  return sin(t/10) * 200 + sin(t) * 2;
}
float y2(float t)
{
  return cos(t/20) * 200 + sin(t/12) * 20;
}

Как видите, вам понадобится peasyCam, чтобы увидеть какие-либо улучшения. Этот код рисует фигуру типа «гиперболоид одного листа», он не настолько совершенен, но является ближайшей геометрической формой, которую я нашел. Я пытаюсь нарисовать его (или перерисовать линии) в 3D, если у вас есть идеи, которые могут мне помочь, буду признателен, Спасибо

1 Ответ

0 голосов
/ 08 июня 2018

Я думаю, я вижу, в чем ваша проблема, вы хотите, чтобы она вытащила гиперболу, но хотите, чтобы это было сделано в 3D.

Попробуйте переключить line на triangle (для этого потребуется 2 дополнительных параметра) или sphere (для этого потребуется радиус.

Надеюсь, это удастся.

...