三个球体的不同速度
different speed of three sphere
我是处理方面的新编码器,这就是为什么请 gentle.I 为您制作一个简单的代码。通常我的代码比较长complex.However,我写了一个简单的代码给你
//main class
ArrayList<Clouds> clouds = new ArrayList();
void setup() {
size(1200, 800, P3D);
for (int i = 0; i < 3; i++)
{
Clouds C = new Clouds();
clouds.add(C);
}
}
void draw() {
background(0);
for (int i = 0; i < clouds.size(); i++)
{
clouds.get(i).drawClouds();
}
}
//Clouds class
class Clouds
{
float xC, yC, zC, speedC;
public Clouds()
{
xC = 20;
yC = 40;
zC = 0;
noStroke();
speedC = 1;
}
public void drawClouds()
{
translate(xC,yC);
pushMatrix();
makingClouds(100, 100, 100);
popMatrix();
if (xC > width - 780) {
xC = -660;
}
xC += speedC;
}
public void makingClouds(float xF, float yF, float zF ) {
translate(xF, yF, zF);
pushMatrix();
lights();
scale(1, 1, 1);
sphere(20);
popMatrix();
}
}
我希望,我在这里写两个 class 没有做错,但我已经工作了整整两天,让我感到恶心。所以我的问题是:如您所见,有三个球体,它们具有相同的速度,但是当我 运行 程序时,它们以不同的速度结束。他们怎么有相同的速度?如果你帮助我,你就是我的英雄!谢谢。
translate()
不只是设置一个平移,它定义了一个平移矩阵,并将新的平移矩阵乘以当前矩阵。
你必须在不同的位置构建云:
void setup() {
// [...]
for (int i = 0; i < 3; i++) {
Clouds C = new Clouds(20, i*40);
clouds.add(C);
}
}
class Clouds {
float xC, yC, zC, speedC;
public Clouds(float x, float y) {
xC = x;
yC = y;
zC = 0;
// [...]
}
并在 pushMatrix()
/ popMatrix()
块中移动 translate
:
class Clouds {
// [...]
public void drawClouds() {
pushMatrix();
translate(xC,yC);
// [...]
popMatrix();
// [...]
}
public void makingClouds(float xF, float yF, float zF ) {
pushMatrix();
translate(xF, yF, zF);
// [...]
popMatrix();
}
示例代码:
//main class
ArrayList<Clouds> clouds = new ArrayList();
void setup() {
size(1200, 800, P3D);
for (int i = 0; i < 3; i++) {
Clouds C = new Clouds(20, i*40);
clouds.add(C);
}
}
void draw() {
background(0);
for (int i = 0; i < clouds.size(); i++) {
clouds.get(i).drawClouds();
}
}
//Clouds class
class Clouds {
float xC, yC, zC, speedC;
public Clouds(float x, float y) {
xC = x;
yC = y;
zC = 0;
speedC = 1;
}
public void drawClouds() {
noStroke();
pushMatrix();
translate(xC,yC);
makingClouds(100, 100, 100);
popMatrix();
if (xC > width - 780) {
xC = -660;
}
xC += speedC;
}
public void makingClouds(float xF, float yF, float zF ) {
pushMatrix();
translate(xF, yF, zF);
lights();
scale(1, 1, 1);
sphere(20);
popMatrix();
}
}
我是处理方面的新编码器,这就是为什么请 gentle.I 为您制作一个简单的代码。通常我的代码比较长complex.However,我写了一个简单的代码给你
//main class
ArrayList<Clouds> clouds = new ArrayList();
void setup() {
size(1200, 800, P3D);
for (int i = 0; i < 3; i++)
{
Clouds C = new Clouds();
clouds.add(C);
}
}
void draw() {
background(0);
for (int i = 0; i < clouds.size(); i++)
{
clouds.get(i).drawClouds();
}
}
//Clouds class
class Clouds
{
float xC, yC, zC, speedC;
public Clouds()
{
xC = 20;
yC = 40;
zC = 0;
noStroke();
speedC = 1;
}
public void drawClouds()
{
translate(xC,yC);
pushMatrix();
makingClouds(100, 100, 100);
popMatrix();
if (xC > width - 780) {
xC = -660;
}
xC += speedC;
}
public void makingClouds(float xF, float yF, float zF ) {
translate(xF, yF, zF);
pushMatrix();
lights();
scale(1, 1, 1);
sphere(20);
popMatrix();
}
}
我希望,我在这里写两个 class 没有做错,但我已经工作了整整两天,让我感到恶心。所以我的问题是:如您所见,有三个球体,它们具有相同的速度,但是当我 运行 程序时,它们以不同的速度结束。他们怎么有相同的速度?如果你帮助我,你就是我的英雄!谢谢。
translate()
不只是设置一个平移,它定义了一个平移矩阵,并将新的平移矩阵乘以当前矩阵。
你必须在不同的位置构建云:
void setup() {
// [...]
for (int i = 0; i < 3; i++) {
Clouds C = new Clouds(20, i*40);
clouds.add(C);
}
}
class Clouds {
float xC, yC, zC, speedC;
public Clouds(float x, float y) {
xC = x;
yC = y;
zC = 0;
// [...]
}
并在 pushMatrix()
/ popMatrix()
块中移动 translate
:
class Clouds {
// [...]
public void drawClouds() {
pushMatrix();
translate(xC,yC);
// [...]
popMatrix();
// [...]
}
public void makingClouds(float xF, float yF, float zF ) {
pushMatrix();
translate(xF, yF, zF);
// [...]
popMatrix();
}
示例代码:
//main class
ArrayList<Clouds> clouds = new ArrayList();
void setup() {
size(1200, 800, P3D);
for (int i = 0; i < 3; i++) {
Clouds C = new Clouds(20, i*40);
clouds.add(C);
}
}
void draw() {
background(0);
for (int i = 0; i < clouds.size(); i++) {
clouds.get(i).drawClouds();
}
}
//Clouds class
class Clouds {
float xC, yC, zC, speedC;
public Clouds(float x, float y) {
xC = x;
yC = y;
zC = 0;
speedC = 1;
}
public void drawClouds() {
noStroke();
pushMatrix();
translate(xC,yC);
makingClouds(100, 100, 100);
popMatrix();
if (xC > width - 780) {
xC = -660;
}
xC += speedC;
}
public void makingClouds(float xF, float yF, float zF ) {
pushMatrix();
translate(xF, yF, zF);
lights();
scale(1, 1, 1);
sphere(20);
popMatrix();
}
}