要實現3D旋轉效果圖,可以使用C語言結合圖形庫進行繪制。以下是一個簡單的示例代碼:
#include <stdio.h>
#include <graphics.h>
#include <math.h>
#define PI 3.14159265
// 3D向量結構體
typedef struct {
float x;
float y;
float z;
} Vector3D;
// 旋轉矩陣結構體
typedef struct {
float m[3][3];
} RotationMatrix;
// 點的旋轉函數
void rotatePoint(Vector3D *point, RotationMatrix *rotationMatrix) {
Vector3D result;
result.x = point->x * rotationMatrix->m[0][0] + point->y * rotationMatrix->m[1][0] + point->z * rotationMatrix->m[2][0];
result.y = point->x * rotationMatrix->m[0][1] + point->y * rotationMatrix->m[1][1] + point->z * rotationMatrix->m[2][1];
result.z = point->x * rotationMatrix->m[0][2] + point->y * rotationMatrix->m[1][2] + point->z * rotationMatrix->m[2][2];
*point = result;
}
int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
// 初始化三維點的坐標
Vector3D point1 = {100, 100, 100};
Vector3D point2 = {-100, 100, 100};
Vector3D point3 = {-100, -100, 100};
Vector3D point4 = {100, -100, 100};
Vector3D point5 = {100, 100, -100};
Vector3D point6 = {-100, 100, -100};
Vector3D point7 = {-100, -100, -100};
Vector3D point8 = {100, -100, -100};
// 設置旋轉角度
float angleX = 0.0, angleY = 0.0, angleZ = 0.0;
// 設置旋轉中心
Vector3D center = {0, 0, 0};
while (!kbhit()) {
cleardevice();
// 計算旋轉矩陣
RotationMatrix rotationMatrixX = {
1, 0, 0,
0, cos(angleX), -sin(angleX),
0, sin(angleX), cos(angleX)
};
RotationMatrix rotationMatrixY = {
cos(angleY), 0, sin(angleY),
0, 1, 0,
-sin(angleY), 0, cos(angleY)
};
RotationMatrix rotationMatrixZ = {
cos(angleZ), -sin(angleZ), 0,
sin(angleZ), cos(angleZ), 0,
0, 0, 1
};
// 應用旋轉矩陣
rotatePoint(&point1, &rotationMatrixX);
rotatePoint(&point2, &rotationMatrixX);
rotatePoint(&point3, &rotationMatrixX);
rotatePoint(&point4, &rotationMatrixX);
rotatePoint(&point5, &rotationMatrixX);
rotatePoint(&point6, &rotationMatrixX);
rotatePoint(&point7, &rotationMatrixX);
rotatePoint(&point8, &rotationMatrixX);
rotatePoint(&point1, &rotationMatrixY);
rotatePoint(&point2, &rotationMatrixY);
rotatePoint(&point3, &rotationMatrixY);
rotatePoint(&point4, &rotationMatrixY);
rotatePoint(&point5, &rotationMatrixY);
rotatePoint(&point6, &rotationMatrixY);
rotatePoint(&point7, &rotationMatrixY);
rotatePoint(&point8, &rotationMatrixY);
rotatePoint(&point1, &rotationMatrixZ);
rotatePoint(&point2, &rotationMatrixZ);
rotatePoint(&point3, &rotationMatrixZ);
rotatePoint(&point4, &rotationMatrixZ);
rotatePoint(&point5, &rotationMatrixZ);
rotatePoint(&point6, &rotationMatrixZ);
rotatePoint(&point7, &rotationMatrixZ);
rotatePoint(&point8, &rotationMatrixZ);
// 繪制旋轉后的點
line(point1.x, point1.y, point2.x, point2.y);
line(point2.x, point2.y, point3.x,