gpt4 book ai didi

java - 让 PeasyCam 在处理中跟随一个球体绕另一个球体运行

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:42 24 4
gpt4 key购买 nike

对所有代码感到抱歉,但基本上我正在尝试设置一个相机来跟踪一颗围绕太阳运行的行星。如何让相机跟随地球?绘图中的旋转根本不会移动相机。

import peasy.*;
import peasy.org.apache.commons.math.*;
import peasy.org.apache.commons.math.geometry.*;
import peasy.test.*;


float sunRadius, planetRadius;
PImage mercury;
PImage the_sun;
PVector sunCenter;
PVector spoke;
Planet ourSun;
Planet ourPlanet;
float orbitSpeed = 0;
PeasyCam camera;



void setup()
{
size(1000,700, P3D);

sunRadius = 200;
planetRadius = 50;

mercury = loadImage("planet2.png");
the_sun = loadImage("sun.jpg");

sunCenter = new PVector(width/2, height/2, -500);
spoke = new PVector(1,0,1);

ourSun = new Planet(the_sun, sunRadius);
ourPlanet = new Planet(mercury, planetRadius);
}

void draw()
{
background(0);
ourSun.show(sunCenter);
ourPlanet.orbit(sunCenter, spoke, orbitSpeed, 1000);

pushMatrix();
rotateY(orbitSpeed);
camera = new PeasyCam(this, sunCenter.x, sunCenter.y, sunCenter.z, 4000);
camera.setActive(false);
popMatrix();

orbitSpeed += 0.01;

}




class Planet {

float sizeof;
PShape planet;

Planet(PImage img, float sizeof)
{
noStroke();
noFill();
this.sizeof = sizeof;
planet = createShape(SPHERE, sizeof);
planet.setTexture(img);
}


void show(PVector position)
{
pushMatrix();
translate(position.x, position.y, position.z);
shape(planet);
popMatrix();
}

void orbit(PVector parent, PVector spoke, float speed, float distance)
{
pushMatrix();
translate(parent.x, parent.y, parent.z);
PVector traj = new PVector(parent.x-distance, 0, 0);
PVector axis = traj.cross(spoke);
rotate(speed, axis.x, axis.y, axis.z);
translate(traj.x, traj.y, traj.z);
shape(planet);
popMatrix();

}

}

我在计算行星球体旋转和平移时的中心点以及让 peasycam 成功绕任何轴旋转时遇到困难。

最佳答案

我在 MapleMath 中做了类似的事情,在那里我让月球绕地球旋转,而两者绕太阳旋转。使用参数方程很容易。您希望相机绕地球运行或绕太阳运行。您的相机位于固定位置。远远超出地球。

我刚刚开始学习处理,它已经被证明具有卓越的视觉效果。我可以建议您使用运行参数化的数学程序来生成点的输出表或顶点并在 beginShape 之后剪切并粘贴表格。我已经下载了你的代码,并将对其进行处理。我实际上正在尝试构建一些非常相似的东西。我将很乐意在不久的将来分享。振动vburach@shaw.ca

关于java - 让 PeasyCam 在处理中跟随一个球体绕另一个球体运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40391371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com