Я пытаюсь проверить код подразделения Де-Кастельжау. Однако мой пример в C #, и я хочу проверить его в Java, так как я не знаю, C #.
Особенно последнее возвращение вызывает у меня проблемы, так как я не могу понять это правильно.
Я использую Vec2D вместо точки, представляющей основные 2d векторы. В этом случае я представляю точки с массивом Vec2D. У меня есть методы, такие как "getX", чтобы получить часть x, но если я просто изменю ее в последней строке, она потерпит неудачу.
Подводя итог, я обменял «Точку» на Vec2D [] и p1.X на p1.getX.
private void drawCasteljau(List<point> list)
{
Point tmp;
for (double t = 0; t & lt;= 1; t += 0.001) {
tmp = getCasteljauPoint(points.Count - 1, 0, t);
image.SetPixel(tmp.X, tmp.Y, color);
}
}
private Point getCasteljauPoint(int r, int i, double t)
{
if (r == 0) return points[i];
Point p1 = getCasteljauPoint(r - 1, i, t);
Point p2 = getCasteljauPoint(r - 1, i + 1, t);
return new Point((int)((1 - t) * p1.X + t * p2.X), (int)((1
- t) * p1.Y + t * p2.Y));
}
Моя попытка:
public Vec2D[] getCasteljauPoint(int r, int i, double t) {
if(r == 0) return new Vec2D[i];
Vec2D[] p1 = getCasteljauPoint(r - 1, i, t);
Vec2D[] p2 = getCasteljauPoint(r - 1, i + 1, t);
return new Vec2D(((1/2) * p1.getX + (1/2) * p2.getX), ((1/2)
* p1.getY + (1/2) * p2.getY));
}
Я чувствую, что должны быть небольшие изменения, чтобы начать, но я застрял. Сообщение об ошибке в последней строке говорит
- getX не может быть разрешен или не является полем
- Несоответствие типов: невозможно преобразовать Vec2D в Vec2D []