Рисование овала

Версия Minecraft
1.10.2
1,921
107
378
Как можно рисовать овал зная точки x1, y1, x2, y2? А именно что-бы овал состоял из линий(ещё я называю это полигонистым овалом/кругом). Именно максимально ванильным способом!
 
MaximPixel написал(а):
Как можно рисовать овал зная точки x1, y1, x2, y2? А именно что-бы овал состоял из линий(ещё я называю это полигонистым овалом/кругом). Именно максимально ванильным способом!

если подойдет - скину код для рисования круга из любых блоков
 
Что значит x1, y1, x2, y2? Овал задается координатами центра (x, y) и двумя радиусами.


Овал из линий? Ты упоролся что ли? Это уже не овал, а многоугольник.


Что значит - ванильный способ?
 
с помощью 2-х радиусов-большого и маленького. от большого отнимаешь маленький и получится кольцо. потом glFragColor и эти векторы. или как ты там собрался,я не знаю

float ring(vec2 pos, float radius1, float radius2) {
float r = sqrt(pos.x*pos.x + pos.y*pos.y);
return float(r > radius1 && r < radius2);
}

void main() {
vec2 pos = gl_FragCoord.xy / resolution.xy - vec2(0.5, 0.5);
pos.x *= resolution.x/resolution.y;

vec3 color = vec3(ring(pos, 0.3+0.09, 0.4));

gl_FragColor = vec4(color, 1.0);
}
 
CoomingSoon написал(а):
с помощью 2-х радиусов-большого и маленького. от большого отнимаешь маленький и получится кольцо. потом glFragColor и эти векторы. или как ты там собрался,я не знаю

float ring(vec2 pos, float radius1, float radius2) {
float r = sqrt(pos.x*pos.x + pos.y*pos.y);
return float(r > radius1 && r < radius2);
}

void main() {
vec2 pos = gl_FragCoord.xy / resolution.xy - vec2(0.5, 0.5);
pos.x *= resolution.x/resolution.y;

vec3 color = vec3(ring(pos, 0.3+0.09, 0.4));

gl_FragColor = vec4(color, 1.0);
}
Что может быть максимально ванильнее, чем шейдер, да?
К тому же, ты что-то напутал, это кольцо, а не овал.

[По теме]
Это называется параметрическими уравнениями.
К примеру для круга, это:
0086da2d5baccbc1c08eb8db3c61a2bd28a353e1


А для овала, я оставлю гугл на тебя.


А вообще, советую просто рисовать картинку круга и скейлить её для овальности :)
 
Назад
Сверху