当前位置:网站首页>Drawing dynamic 3D circle with pure C language
Drawing dynamic 3D circle with pure C language
2022-07-05 05:20:00 【Korloa】
Recently, I found something about using C Language in Windows Environment to draw dynamic circle code , It is worth learning from .
Everyone knows ,C/C++ Born with a black window , Only characters . But running the following code will definitely surprise you .
Be careful :
The code may need to add the following code to the compilation options to run
-lgdi32Code:
#include <math.h>
#include <windows.h>
#define PI 3.1415926
#define SX 8
#define SY 16
#define DX PI / SX
#define DY PI * 2 / SY
#define X(a, b) (cx + v[a][b].x * r), (cy + v[a][b].y * r)
typedef struct { double x, y; } Vec;
void calc(double i, double j, double rot, Vec* v) {
double x = sin(i) * cos(j), y = sin(i) * sin(j), z = cos(i),
s = sin(rot), c = cos(rot), c1 = 1 - c, u = 1 / sqrt(3.0f), u2 = u * u;
v->x = x * (c + u2 * c1) + y * (u2 * c1 - u * s) + z * (u2 * c1 + u * s);
v->y = x * (u2 * c1 + u * s) + y * (c + u2 * c1) + z * (u2 * c1 - u * s);
}
int main() {
HWND hwnd = GetConsoleWindow(); HDC hdc1 = GetDC(hwnd);
double rot = 0;
while(1) {
RECT rect; GetClientRect(hwnd, &rect); int w = rect.right, h = rect.bottom, cx = w / 2, cy = h / 2, r = h * 0.375;
HDC hdc2 = CreateCompatibleDC(hdc1); HBITMAP bmp = CreateCompatibleBitmap(hdc1, w, h); SelectObject(hdc2, bmp);
SelectObject(hdc2, GetStockObject(WHITE_PEN));
Vec v[SX + 1][SY + 1];
for(int i = 0; i <= SX; ++i) for(int j = 0; j <= SY; ++j) calc(i * DX, j * DY, rot, &v[i][j]);
for(int i = 0; i < SX; ++i) for(int j = 0; j < SY; ++j) {
MoveToEx(hdc2, X(i, j), NULL); LineTo(hdc2, X(i + 1, j));
MoveToEx(hdc2, X(i, j), NULL); LineTo(hdc2, X(i, j + 1));
}
BitBlt(hdc1, 0, 0, w, h, hdc2, 0, 0, SRCCOPY); DeleteObject(bmp); DeleteDC(hdc2);
rot += 0.01; Sleep(10);
}
}边栏推荐
- [to be continued] [depth first search] 547 Number of provinces
- Unity ugui source code graphic
- Lua wechat avatar URL
- How can the Solon framework easily obtain the response time of each request?
- Solon Logging 插件的添加器级别控制和日志器的级别控制
- 服务熔断 Hystrix
- MySQL数据库(一)
- Django reports an error when connecting to the database. What is the reason
- 小程序直播+電商,想做新零售電商就用它吧!
- Generate filled text and pictures
猜你喜欢
![[merge array] 88 merge two ordered arrays](/img/e9/a73d9f22eead8e68c1e45c27ff6e6c.jpg)
[merge array] 88 merge two ordered arrays

Do a small pressure test with JMeter tool

lxml.etree.XMLSyntaxError: Opening and ending tag mismatch: meta line 6 and head, line 8, column 8

第六章 数据流建模—课后习题

GBase数据库助力湾区数字金融发展

Data is stored in the form of table

Reverse one-way linked list of interview questions

Ue4/ue5 illusory engine, material part (III), material optimization at different distances
![[turn to] MySQL operation practice (I): Keywords & functions](/img/b1/8b843014f365b786e310718f669043.png)
[turn to] MySQL operation practice (I): Keywords & functions

To the distance we have been looking for -- film review of "flying house journey"
随机推荐
[to be continued] [depth first search] 547 Number of provinces
Applet Live + e - commerce, si vous voulez être un nouveau e - commerce de détail, utilisez - le!
MySQL数据库(一)
C language Essay 1
Development error notes
Support multi-mode polymorphic gbase 8C database continuous innovation and heavy upgrade
Magnifying glass effect
The present is a gift from heaven -- a film review of the journey of the soul
A three-dimensional button
[转]:Apache Felix Framework配置属性
Shell Sort
Ue4/ue5 illusory engine, material part (III), material optimization at different distances
Demonstration of using Solon auth authentication framework (simpler authentication framework)
Data is stored in the form of table
Research on the value of background repeat of background tiling
Introduction to tools in TF-A
C语言杂谈1
Service fusing hystrix
Generate filled text and pictures
object serialization