我有一个生成.ppm文件的程序,上面有一堆黑点。我想要做的是在这些点之间绘制线条来构建图形,但是我想知道是否有办法直接操作.ppm的矩阵,而不是使用一些摆动方法。 我假设它需要一些嵌套循环,但我如何确定需要更改哪些位置以创建两个点之间的线?
(对于那些不知道的人来说,.ppm文件基本上是一个巨大的矩阵,每个位置都有3个RGB值,允许你逐个像素地绘制东西)
答案 0 :(得分:0)
单像素厚度:
void drawline(Color pixels[][], int width, int height,
int x1, int x2, int y1, int y2, Color line)
{
int dx = x1 - x2;
int dy = y1 - y2;
if (dx != 0 || dy != 0)
{
int n = Math.Max(Math.Abs(dx), Math.Abs(dy));
double inv = 1.0 / (double)(n + 1);
double dxdn = (double)dx * inv;
double dydn = (double)dy * inv;
double x = (double)x1, y = (double)y1;
for (int i = 0; i <= n; i++)
{
int xi = (int)x, yi = (int)y;
if (xi >= 0 || xi < width || yi >= 0 || yi < height)
pixels[yi][xi] = line;
x += dxdn; y += dydn;
}
}
}
(注意这是C#语法;您可能需要次要更改才能将其转换为Java)