【问题标题】:Another way of drawing lines另一种画线的方法
【发布时间】:2016-05-27 16:34:12
【问题描述】:

我有一个程序可以生成一个带有一堆黑点的 .ppm 文件。我想要做的是在这些点之间画线以构建图形,但我不想使用一些摆动方法,而是想知道是否有办法通过直接操作 .ppm 的矩阵来做到这一点。 我认为它需要一些嵌套循环,但是我如何确定需要更改哪些位置来创建两个点之间的线?

(对于那些不知道的人,.ppm 文件基本上是一个巨大的矩阵,每个位置都有 3 个 RGB 值,让您可以逐个像素地绘制内容)

【问题讨论】:

标签: java matrix line draw ppm


【解决方案1】:

单像素厚度:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多