java三角插值如何又名rgb测试图像

java triangle interpolation how to aka rgb test image

所以我想做的是在没有任何外部库的情况下在 java 中插入一个三角形作为挑战,仅使用 swing 来显示图像。我在网上搜索,但找不到任何东西。这就是我做这个的原因。

解决方案:加权平均!

private int interpolate(int x, int y, int v1, int v2, int v3) {
    // these are my triangle corners

    Vector p1v = new Vector(p1.x, p1.y);
    Vector p2v = new Vector(p2.x, p2.y);
    Vector p3v = new Vector(p3.x, p3.y);

    // current point
    Vector f = new Vector(x, y);

    // calculate weighted average

    double a1 = triangleArea(f, p2v, p3v);
    double a2 = triangleArea(f, p1v, p3v);
    double a3 = triangleArea(f, p1v, p2v);

    return (int) ((a1 * v1 + a2 * v2 + a3 * v3) / (a1 + a2 + a3));

}

用法 - 为 x 和 y 值放入双 for 循环:

int red = interpolate((int) x, y, p1red, p2red, p3red);
int green = interpolate((int) x, y, p1green, p2green, p3green);
int blue = interpolate((int) x, y, p1blue, p2blue, p3blue);

//System.out.println("xyrgb: " + (int)x + ", " + y + ", " + red + ", " + green + ", " + blue);

bI.setRGB((int)x, y, new Color(red, green, blue).getRGB());

您可以在我的 github 上找到更多代码:here

屏幕截图: