- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 C++ 在 Windows 控制台上构建一个简单的 2D 应用程序来显示各种图元,因此我从最基本的一个开始:三角形。我可以正确显示三角形的轮廓和顶点,但在填充它时遇到问题。我遇到过一些此处介绍的光栅化算法:http://www.sunshine2k.de/coding/java/TriangleRasterization/TriangleRasterization.html并决定我会采用第一种方法。我复制了平底三角形案例的代码,但这似乎在我的应用程序上无法正常工作,而且我不知道问题的原因是什么。
我的结果:
main()
screen.fillFlatBottomTriangle(30,10, 10, 140/4, 256/2, 140/4, block_char, FG_CYAN);
screen.drawTriangle(30,10, 10, 140/4, 256/2, 140/4, block_char, BG_DARK_GREY);
screen.drawPixel(30,10,block_char,FG_RED);
screen.drawPixel(10,140/4,block_char,FG_GREEN);
screen.drawPixel(256/2,140/4,block_char,FG_MAGENTA);
填充FlatBottomTriangle
//http://www.sunshine2k.de/coding/java/TriangleRasterization/TriangleRasterization.html
void Screen::fillFlatBottomTriangle(int x1, int y1, int x2, int y2, int x3, int y3, short character, short color)
{
float invslope1 = (x2 - x1) / (y2 - y1);
float invslope2 = (x3 - x1) / (y3 - y1);
float curx1 = x1;
float curx2 = x1;
for (int scanlineY = y1; scanlineY <= y2; scanlineY++)
{
this->drawLine((int)curx1, scanlineY, (int)curx2, scanlineY, character, color);
curx1 += invslope1;
curx2 += invslope2;
}
}
画线
// https://en.wikipedia.org/wiki/Digital_differential_analyzer_(graphics_algorithm)
void Screen::drawLine(int x1, int y1, int x2, int y2, short character, short color)
{
float delta_x = x2 - x1;
float delta_y = y2 - y1;
float step;
if (abs(delta_x) >= abs(delta_y))
step = abs(delta_x);
else
step = abs(delta_y);
delta_x = delta_x / step;
delta_y = delta_y / step;
float x = x1;
float y = y1;
for (int i = 1; i <= step; i++)
{
this->drawPixel((int)x, (int)y, character, color);
x += delta_x;
y += delta_y;
}
}
绘制三角形
void Screen::drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3, short character, short color)
{
this->drawLine(x1,y1, x2, y2, character, color);
this->drawLine(x1,y1, x3, y3, character, color);
this->drawLine(x2,y2, x3, y3, character, color);
}
最佳答案
请参阅这部分:(x2 - x1)/(y2 - y1)
由于这里的所有变量都是整数,所以这是整数除法。也就是说,除法的结果向 0 舍入。将结果分配给 float 不会改变这一点。
要进行浮点除法,您应该将至少一个操作数转换为浮点:(x2 - x1)/(float) (y2 - y1)
您当前的代码将其中一个反斜率舍入为 0,从而在左侧产生垂直线。另一侧的 x 值也增加得不够快,因为该部分也在下方进行了舍入。
关于C++ 2D 图形 : Flat Bottom Triangle Rasterization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65524726/
我有以下三 Angular 形 由以下 css 创建: .triangle { width: 0; height: 0; border-left: 5px solid tran
在(不久前)阅读索引索引的三角形列表后,由于需要较少的绘制调用,因此我决定在三角形列表上构建我的引擎。今天,我偶然发现了0xffffffff,在DX中该值被认为是 strip 切割索引,因此您可以在一
该类包含: 三个 double 数据字段,分别命名为 side1、side2 和 side3,具有默认值1.0 表示三角形的三边 无参数构造函数,用于创建具有指定 side1、side2 和 side
我一直在尝试用 C 语言解决 HackerRank 网站中的“小三角形,大三角形”问题,这是一种排序数组问题,我使用了选择排序算法。我的代码似乎可以工作,但它仅适用于某些测试用例。这是任务: You
我需要打印一个三角形及其倒三角形(站在其尖端)。我设法只打印出三角形。我知道我可以轻松使用 for 循环,但我想知道如何使用递归,就我而言,我不知道如何打印三角形和倒三角形。谢谢。 Example d
如果使用函数 triangular_mesh 可以传递一组三角形,以索引列表、顶点位置和一组数据的形式给出,以将颜色分配给顶点。然后通过顶点颜色之间的插值对三角形着色。 如何在不进行任何插值的情况下按
我正在实现 Wikipedia 中介绍的 Bowyer-Watson 算法.在我的实现中,一切都如我所料,直到伪代码的最后一部分: for each triangle in triangulation
题目地址 https://leetcode.com/problems/triangle/description/ 题目描述: Given a triangle, find the minimum
我想知道是否有一些教程或指南来理解和实现 3D 环境中的三角形-三角形相交测试。 (我不需要知道交叉点发生的确切位置,但只需要知道交叉点已经发生) 我打算按照理论 pdf 来实现它,但我很困在 计算三
我制作了一个程序来制作帕斯卡三角形并输入数字(行)> 5,存在对齐问题,即 ncr > 10。请帮帮我。我已经包含了程序输出的图像。 Output Image #include int factori
由于很难解释,我将向您展示我假装的图像。 问题不在于“三 Angular 形”,而在于要在三 Angular 形生成的“空间”中显示的图像背景。 最佳答案 这是我的方法,如何处理这个任务。我将伪元素
题目地址:https://leetcode.com/problems/pascals-triangle/open in new window Total Accepted: 83023 Total
如何使用 Triangle.NET 对具有如下所示孔的多边形进行三角剖分? 我需要由三角形覆盖的绿色区域。我想我需要在触摸点上分割外部轮廓的右侧部分,但之后我不知道是否需要将两个轮廓合并为一个(在黑色
我在碰撞检测代码中使用的代码是这样的: (注意:Vector3f 是 LWJGL 库的一部分。) (注2:Tri是由LWJGL的Vector3fs.v1、v2、v3三个组成的类。) public Ve
有一个三角网格生成器(Shewchuk,CMU), "Triangle" ,由于其重量轻而受到人们的推荐。它是用 C 编写的。但是我无法在我的 VS2012 C++ 项目中使用它。我正在使用 x64
我应该编写的程序应该按以下方式打印三角形: 如果行数为2: * *** 如果行数为3: * * * ***** 但是,我所做的以下代码打印了最后一行的
(我在这里搜索并通读了钻石和虚拟继承问题,但找不到答案。我的想法是这种情况有点不寻常,我愿意考虑我的要求有点关闭。另一方面,我认为这应该以一种“不错”的方式实现。) 情况及要求: 我有一个 C++ 类
我构建 HTML/CSS/JS 菜单并希望将箭头向右对齐以指向该元素是子菜单。 我的问题是在 Firefox 中三 Angular 形(“▶”符号)显示在下一行而不是当前行... Chromium 在
我正在创建一个 OpenGL 程序,它只是创建一个三角形并将其绘制在屏幕上。我创建了一个名为 Drawable 的类,其中包含绘制函数以及使用的 VAO 和 VBO 对象。我还创建了一个继承自 Dra
我正在尝试使用嵌套循环打印下面的图片(我应该使用 for 和 while 循环): ** **** ****** ******** 以 5 个空格开头,每行减少 2 个空格。从 2
我是一名优秀的程序员,十分优秀!