Тема: Processing
Привіт кожному.
Прошу допомоги з виконанням моєї лабораторної роботи(на форумі немає прям теми про Processing).
Предмет обчислювальна геометрія.
Побудувати аксонометричну проекцію куба з вписаними в його грані колами при співвідношенні масштабів kx : ky : kz = 6:5:4
Я щось якось спробував зробити за допомогою додаткових джерел.
Код прикріпив нижче. Наче малює але кола криві. І до кінця не можу зрозуміти яку саме аксометричну модель, почитав їх є декілька. Якщо не важко допоможіть розібратися будь ласка.
void setup() {
size(400, 400, P3D);
translate(232, 192, 0);
rotateY(0.5);
noFill();
float kx = 6;
float ky = 5;
float kz = 4;
float boxSizeX = 160;
float boxSizeY = boxSizeX * ky / kx;
float boxSizeZ = boxSizeX * kz / kx;
float radius = min(boxSizeX, min(boxSizeY, boxSizeZ)) / 2;
beginShape(QUADS);
// Front face
vertex(-boxSizeX/2, -boxSizeY/2, -boxSizeZ/2);
vertex(boxSizeX/2, -boxSizeY/2, -boxSizeZ/2);
vertex(boxSizeX/2, boxSizeY/2, -boxSizeZ/2);
vertex(-boxSizeX/2, boxSizeY/2, -boxSizeZ/2);
// Back face
vertex(-boxSizeX/2, -boxSizeY/2, boxSizeZ/2);
vertex(boxSizeX/2, -boxSizeY/2, boxSizeZ/2);
vertex(boxSizeX/2, boxSizeY/2, boxSizeZ/2);
vertex(-boxSizeX/2, boxSizeY/2, boxSizeZ/2);
// Top face
vertex(-boxSizeX/2, -boxSizeY/2, -boxSizeZ/2);
vertex(boxSizeX/2, -boxSizeY/2, -boxSizeZ/2);
vertex(boxSizeX/2, -boxSizeY/2, boxSizeZ/2);
vertex(-boxSizeX/2, -boxSizeY/2, boxSizeZ/2);
// Bottom face
vertex(-boxSizeX/2, boxSizeY/2, -boxSizeZ/2);
vertex(boxSizeX/2, boxSizeY/2, -boxSizeZ/2);
vertex(boxSizeX/2, boxSizeY/2, boxSizeZ/2);
vertex(-boxSizeX/2, boxSizeY/2, boxSizeZ/2);
// Left face
vertex(-boxSizeX/2, -boxSizeY/2, -boxSizeZ/2);
vertex(-boxSizeX/2, boxSizeY/2, -boxSizeZ/2);
vertex(-boxSizeX/2, boxSizeY/2, boxSizeZ/2);
vertex(-boxSizeX/2, -boxSizeY/2, boxSizeZ/2);
// Right face
vertex(boxSizeX/2, -boxSizeY/2, -boxSizeZ/2);
vertex(boxSizeX/2, boxSizeY/2, -boxSizeZ/2);
vertex(boxSizeX/2, boxSizeY/2, boxSizeZ/2);
vertex(boxSizeX/2, -boxSizeY/2, boxSizeZ/2);
endShape();
for (int i = 0; i < 4; i++) {
float x = (i % 2 == 0) ? -boxSizeX/2 + radius : boxSizeX/2 - radius;
float y = (i < 2) ? -boxSizeY/2 + radius : boxSizeY/2 - radius;
for (float z = -boxSizeZ/2 + radius; z < boxSizeZ/2; z += radius * 2) {
pushMatrix();
translate(x, y, z);
ellipse(0, 0, radius * 2, radius * 2);
popMatrix();
}
}
}