问题标签 [line-drawing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Trying to move an object in a matrix using line drawing algorithm
I'm trying to move an object in a matrix (an array with [x,y]) using a line drawing algorithm, to help you understand what I mean I'm trying to make an object move like this:
But instead of going "in line" it goes like this:
I opened another question about this problem here, and you told me to use a line drawing algorithm, which I did, but I still can't make it move in that order.
A little bit about the code (I'm giving you some 'background' so you won't be confused): The Location
variable contains a location on the matrix, it has x and y, which can be accessed like this:
The Direction
variable contains a direction, there are 5 directions:
I think it's obvious what each of them means.
The command game.Destination(myPirate, direction);
calculates where the object ends up on the next turn(returns a location).
Now here is the code that I got:
On some parts in the code above I'm also using parts from the MyBot
class, here are these parts:
The 'object' I told you about is called myPirate
in the code, and it can only move in one direction each turn. the code run again in each turn until it gets to the target.
How can I make this program work right? What is wrong with my code?
algorithm - 维基百科的 Bresenham 算法是否有错误?
Bresenham 的算法用于在正方形网格上绘制一条线,例如像素。
该算法部分基于将平面细分为称为八分圆的 8 个部分。
诀窍是使用对称性来概括算法,而不管第二个点位于何处:首先我们将其“移动”到第一个八分圆,然后进行计算,最后将生成的点转换回其原始八分圆。
Wikipedia 提供了执行该技巧的基本功能。
此外,它写道,我们只需要:
翻转输入和输出的坐标系
这是基于这些换位实际上是对合的事实:f(f(x)) = x
没有太注意它,我首先认为它会起作用。
但是对于案例 3 和 7,它不起作用,因为它不是对合。
例如:
我们必须再次做到这一点:
那么,我是不是误会了什么?
或者实际上是在起草维基百科文章时缺乏精确性,是否应该有人改进它?
如果没有我需要使用两个函数switchToOctant_onInput
和switchToOctant_onOutput
(我现在看到的这个问题的明显解决方案),就没有更好的方法来进行这些转换吗?
ios - 如何在swift中计算两个画线图像的相似度
我们需要比较两张手绘图片。这些图片是在精灵套件上绘制的。我们需要看看这些图片是否大致匹配。例如,如果有人画了一张笑脸图,我们需要检查重绘的笑脸图是否看起来像第一个绘制的笑脸图。我们需要知道两个图像是否相似......并计算准确度它们相似程度的百分比..请提出一些解决方案。提前致谢。
algorithm - 了解 Bresenham 算法的误差累积部分?
我在理解 Bresenham 的线条绘制算法中的误差累积部分如何工作时遇到问题。
假设我们有x1
和x2
。让我们假设x1 < x2
,y1 < y2
和(x2 - x1) >= (y2 - y1)
为简单起见:
让我们从简单的画线开始。它看起来像:
让我们让它更 Bresenham'ish,并将 y 的整数和浮点部分分开:
yf
在这一点上,我们可以将它们相乘slope
以2 * (x2 - x1)
使它们成为整数,不再需要浮点数。我明白那个。
我不完全理解的部分是:
这实际上是如何工作的?为什么我们要与 1.0 进行比较然后递减呢?
我知道 Bresenham 的基本问题是:如果我们目前处于像素状态x, y
并且我们想要绘制下一个,我们应该选择x + 1, y
还是x + 1, y + 1
?- 我只是不明白那张支票是如何帮助我们回答这个问题的。
有些人称之为错误术语,有些人称之为阈值,我只是不明白它代表什么。
任何解释表示赞赏,谢谢。
rotation - 绕中心旋转线
我必须使用专有的图形引擎来绘制一条线。我可以按原点 (P1) 旋转整个绘图。我想要的是围绕其中心点(M)旋转它。所以基本上它看起来像 L_correct 而不是 L_wrong。
我认为,应该可以通过将其从 P1 移动到 P2 来纠正它。但我无法弄清楚可以使用什么公式来确定距离。它可能涉及角度,宽度和高度......
所以基本上我的问题是,是否有一个函数可以根据我的可用数据确定 x2 和 y2?
java - Swing:我通过鼠标拖动绘制的任何线条仅在下一次拖动鼠标时显示
我还在学习 Java 的基础知识,如果这个问题很基础,我很抱歉。我尝试做的是将点和线存储到ArrayLists
其中,然后让paintComponent()
方法通过它们并在每次调用时绘制它们。由于我的积分使用相同ArrayList
,因此每次按下鼠标时都会清除它,因此新行不会与前一行连接。
问题是当我拖动鼠标时,没有画线,但它的点仍然被存储,因为当我再次拖动鼠标时线出现了。是什么导致了这种明显的延迟?
graphics - DDA 算法和 Bresenham 算法
我一直在研究用于画线的 DDA 和 Bresenham 算法,并且对一件事感到好奇。在这两种算法中,我们都将像素网格视为单位大小并执行进一步的步骤。我的问题是我是否将网格大小更改为 0.5 *0.5 而不是 1*1 网格,这两种算法的工作方式是否会有任何变化。如果是的话,有人能告诉我每个算法分别会有哪些变化。很想知道。谢谢你的回答提前。任何可以帮助的人,请这样做,因为它很紧急。我有一个考试,我想澄清这个概念。请。谢谢:)
c# - C#:在 SharpDX (Direct3D11) 中画一条线
我只是不知道如何在我的sharpdx 场景中为网格绘制一些线条。我看到了 Direct3D9 的一些示例,但我使用的是 Direct3D11,所以我无法让它工作。Direct3D11 不支持 DirectDX3D9 中提供的 Line 类。 例子
我想为一条线创建一些类似小缩放立方体的东西,但我认为这不是正确的方法,因为我将有 8 个顶点用于一条线而不是 2 个。