gpt4 book ai didi

C如何在不使用图形库或任何其他库函数的情况下绘制点/设置像素

转载 作者:太空狗 更新时间:2023-10-29 17:20:41 27 4
gpt4 key购买 nike

我想了解如何在不使用库函数的情况下绘制一组点(/设置像素)形成一个圆。

现在,在给定半径的情况下获取点的 (x,y) 坐标很简单。

    for (x=-r; x <r; x=x+0.1) {
y = sqrt(r*r - x*x);
draw(x,y, 0, 0);
}

但是一旦我有了这些点,我就很困惑你实际上是如何画圆的。我可以使用图形库,但我想了解您如何在不使用图形库的情况下做到这一点

    void draw(float x, float y, float center_x, float center_y) {
//logic to set pixel given x, y and circle's center_x and center_y
// basically print x and y on the screen say print as a dot .
// u 'd need some sort of a 2d char array but how do you translate x and y
// to pixel positions
}

有人可以分享任何链接/引用资料或解释这是如何工作的吗?

最佳答案

char display[80][26];

void clearDisplay(void) {
memset(display, ' ', sizeof(display));
}

void printDisplay(void) {
for (short row=0; row<26; row++) {
for (short col=0; col<80; col++) {
printf("%c", display[col][row]);
}
printf("\n");
}
}


void draw(float x, float y, float center_x, float center_y) {
if (visible(x,y)) {
display[normalize(x)][normalize(y)] = '.';
}
}

伊迪丝: 你改变了你的评论,以纳入更多你的问题,所以我会扩大我的答案。

你有两组坐标:

  • 世界坐标(如世界地图上的比例经度和纬度或电磁显微镜上的飞米)这些主要是您的 x 和 y
  • 显示坐标:这些是您的显示设备的表示,例如 Nexus 7 或 Nexus 10 平板电脑,及其物理尺寸(像素或像素或每英寸点数)

您需要一个度量标准,将您的世界坐标转换为显示坐标。为了让事情变得更复杂,你需要一个窗口(你想向用户展示的世界的一部分)来剪辑你不能展示的东西(比如非洲,当你想展示欧洲时)。你可能想要缩放你的世界坐标以匹配你的显示坐标(你想要显示多少欧洲)

这些指标和剪报是简单的代数变换

  • 将世界坐标缩放到显示坐标:display-x = world-x * factor(飞米或千米到像素)
  • 将世界中心转换为显示中心:display-X + adjustment

等等。只是“代数变换”或“几何学”的维基百科

关于C如何在不使用图形库或任何其他库函数的情况下绘制点/设置像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15072025/

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