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

2023-11-22

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

现在,获取给定半径的点的 (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)] = '.';
  }
}

EDITH:您更改了评论,以纳入更多问题,所以我将稍微扩展一下我的答案。

你有两组坐标:

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

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

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

  • 将世界坐标缩放到显示坐标:display-x = world-x * 因子(飞米或公里到像素)
  • 将世界中心转换为显示中心:display-X + 调整

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何获取正在访问 ASP.NET 应用程序的当前用户?

    为了获取系统中当前登录的用户 我使用以下代码 string opl System Security Principal WindowsIdentity GetCurrent Name ToString 我正在开发一个 ASP NET 应用程
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐

  • 如何在C++中将自定义项目添加到系统菜单?

    我需要枚举所有正在运行的应用程序 特别是所有顶部窗户 对于每个窗口 我需要将自定义项目添加到该窗口的系统菜单中 我怎样才能在 C 中实现这一点 Update 我非常乐意为 Windows MacOS 和 Ubuntu 提供解决方案 不过 我
  • 使用钉枪加快 Clojure 启动时间

    我时不时地想用一下会很好clojure for 外壳脚本 但是大约 900ms 的启动时间太慢了 然后我会google首页对于 nailgun clojure 但显示的唯一结果是针对像 vimclojure 这样的特殊情况 那时我假装没有时
  • 从python中的字节中提取LSB位

    我在变量 DATA 中有一个字节 我想从中提取 LSB 位并打印它 我对 python 很陌生 我发现很多文章都有复杂的按位加法逻辑 而且所有这些都很难理解 我正在寻找一个简单的逻辑 就像我们对字符串所做的那样 例如 DATA 7 1 请帮
  • 在 Android 中上传带有进度条且没有 OutOfMemory 错误的大文件

    我在上传大型视频文件 最大 150MB 时遇到问题 1 当我使用此代码时Link1 我可以上传带有进度条的小文件 但是由于我的文件很大 所以android给了我内存不足错误 2 如果我使用这个代码Link2 我能够上传大文件 这确实是一个很
  • 在 C# 中使用 Lisp

    正如很多人指出的那样这个问题 Lisp主要是作为一种学习体验 尽管如此 如果我能以某种方式使用我的 Lisp 算法并将它们与我的 C 程序结合起来 那就太好了 在大学里 我的教授从来没能告诉我如何在程序中使用 Lisp 例程 不 不是用 L
  • 我如何才能收到 Cocoa 应用程序中系统时间更改的通知?

    我有一个可可应用程序 用于记录事件的日期戳 我需要知道系统时间何时重置以及重置多少 但我似乎无法在任何地方发出通知来告诉我发生了这样的事情 由于 NTP 重置时钟或用户重置 例如从系统偏好设置 可能会发生此更改 如果有一个就太好了NSNot
  • 自定义改造 ErrorHandler 给出 UndeclaredThrowableException

    基于这篇文章我应该如何在 Android 上使用 Retrofit 处理 无互联网连接 我做了一个定制ErrorHandler private static class CustomErrorHandler implements Error
  • 如何将字符串解析为java.sql.date

    我有一个字符串 String s 01 NOVEMBER 2012 然后我想将其解析为 sqlDate 并将其插入数据库 是否可以将字符串解析为sql Date 是的 sql日期格式是 yyyy mm dd Use SimpleDateFo
  • 获取模型后渲染 Marionette 区域

    我想使用 Derick Bailey 在 通用问题解决方案 在这个thread获取模型后渲染视图 我将在这里报告他的解决方案 MyView Backbone View extend initialize function this mode
  • 在 ocaml 中输入级别整数

    有人可以给我关于在 OCaml 3 12 中制作类型级整数支持加法和减法运算的建议 建议吗 例如 如果我有这样表示的数字 type zero type a succ type pos1 zero succ type pos2 zero su
  • 如何在Python中从负纪元创建日期时间

    第一次使用 StackExchange 我正在使用 ArcGIS Server 和 Python 在尝试使用地图服务的 REST 端点执行查询时 我在 JSON 响应中获取负纪元中 esriFieldTypeDate 字段的值 JSON 响
  • XamlParseException 无法分配给属性。绑定不适用于附加属性

    我想为 Windows 应用商店应用程序创建带有附加属性的自定义文本框 我正在关注这个解决方案 现在它使用硬编码值作为属性值 但我想使用绑定来设置值 但它不起作用 我尝试搜索很多但没有帮助我任何解决方案 异常详细信息是这样的 Windows
  • CSV 的替代品?

    我打算构建一个 RESTful 服务 它将返回自定义文本格式 鉴于我的数据量非常大 XML JSON 太冗长了 我正在寻找一种基于行的文本格式 CSV 是一个明显的候选者 不过我想知道是否还有更好的东西 我通过一些研究唯一发现的是CTX a
  • 正确安装 mingw-get - mingw/msys 路径缺失以及更多!

    我运行的是Windows XP 我一直在关注本教程所以下载 mingw get insthere 我已经这样做过几次了 最后一次我检查了 boes 以安装所有内容 包括但不限于 gcc g MSYS 和 MinGW 编译套件 我告诉它也创建
  • 使用 Tensorflow 2.0 进行逻辑回归?

    我正在尝试使用 TensorFlow 2 0 构建多类逻辑回归 并且我编写了我认为正确的代码 但它没有给出好的结果 我的准确率实际上是 0 1 甚至损失也没有减少 我希望有人能在这里帮助我 这是我到目前为止编写的代码 请指出我在这里做错了什
  • 通过核心数据、NSExpression 进行不同计数到 NSFetchedResultsController

    目前使用核心数据 我有一张表 我试图在其中检索以下信息 SELECT item COUNT FROM myTable GROUP BY item 为了产生这种类型的结果 item COUNT group 1 2 group 2 5 grou
  • ConfigurationManage ->section.SectionInformation.ProtectSection() 是否依赖于机器?

    在代码中 Configuration config ConfigurationManager OpenExeConfiguration Application ExecutablePath ConnectionStringsSection
  • 使用 Image.FromFile 不会释放文件句柄

    我正在将多个多图像 tiff 文件连接到单个多图像 tiff 文件 并且在删除源 tiff 文件时遇到问题 因为 Image 类继续保留它们的句柄 我正在通过 Image FromFile 读取 tiff 图像 Bitmap resultT
  • 如何将输入元素与其标签放在同一行?

    我想放一个label and an input type text 在同一条线上 我想要input的宽度来填充包含元素的剩余宽度 无论标签文本的长度如何 请参见第一张图片 我尝试使用width auto 为了input 但它似乎有一个静态宽
  • C 如何在不使用图形库或任何其他库函数的情况下绘制点/设置像素

    我试图了解如何在不使用库函数的情况下绘制一组形成圆圈的点 设置像素 现在 获取给定半径的点的 x y 坐标非常简单 for x r x