cilindros con rango de ángulos

This commit is contained in:
sejo 2021-05-26 09:55:15 -05:00
parent 1d48181839
commit 5d926f3e8c
1 changed files with 68 additions and 6 deletions

View File

@ -39,14 +39,13 @@ void cono(float r, float h, int N){
// N: número de divisiones en la base
// variables auxiliares:
float x,y,angulo;
float x,y;
beginShape(TRIANGLE_FAN);
vertex(0,0,h); // vértice de la punta
// ciclo para los vértices de la base
for(int i=0;i<=N;i=i+1){
angulo = i*TWO_PI/N;
for(float angulo=0; angulo<=TWO_PI; angulo=angulo+TWO_PI/N){
x = r*cos(angulo);
y = r*sin(angulo);
vertex(x,y,0);
@ -55,6 +54,8 @@ void cono(float r, float h, int N){
}
```
## Cono con base aleatoria
![](/img/conos-aleatorios.png)
@ -147,11 +148,10 @@ void cilindro(float r, float h, int N){
// N: número de divisiones en la base
// variables auxiliares
float x,y,angulo;
float x,y;
beginShape(QUAD_STRIP);
for(int i=0; i<=N; i=i+1){
angulo = i*TWO_PI/N;
for(float angulo=0; angulo<=TWO_PI; angulo=angulo+TWO_PI/N){
x = r*cos(angulo);
y = r*sin(angulo);
// vértice en la base
@ -163,6 +163,35 @@ void cilindro(float r, float h, int N){
}
```
### Variación: Cilindro con rango de ángulo
Esta función permite determinar el ángulo de inicio y fin del cilindro. Nota que los ángulos se especifican en radianes.
```java
void cilindro(float r, float h, int N, float anguloInicial, float anguloFinal){
// dibuja un cilindro tradicional, en un rango específico de ángulo
// r: radio de la base
// h: altura
// N: número de divisiones en la base
// anguloInicial: a partir de qué ángulo empieza el cilindro (en radianes)
// anguloFinal: en qué ángulo termina el cilindro (en radianes)
// variables auxiliares
float x,y;
beginShape(QUAD_STRIP);
for(float angulo=anguloInicial; angulo<=anguloFinal; angulo += (anguloFinal-anguloInicial)/N){
x = r*cos(angulo);
y = r*sin(angulo);
// vértice en la base
vertex(x,y,0);
// vértice en la tapa
vertex(x,y,h);
}
endShape();
}
```
## Cilindro con base/tapa aleatoria
![](/img/cilindros-aleatorios.png)
@ -311,6 +340,39 @@ void cilindroCono(float r1, float r2, float h, int N){
}
```
### Variación: rango de ángulos
Esta versión de la función permite especificar el ángulo inicial y final de la figura. Nota que los ángulos son en radianes:
```java
void cilindroCono(float r1, float r2, float h, int N, float anguloInicial, float anguloFinal) {
// dibuja un cilindro con base y tapa de diferente radio
// r1: radio de la base
// r2: radio de la tapa
// h: altura
// N: número de divisiones en la base/tapa
// anguloInicial: a partir de qué ángulo empieza el cilindro (en radianes)
// anguloFinal: en qué ángulo termina el cilindro (en radianes)
// variables auxiliares
float x, y;
beginShape(QUAD_STRIP);
for (float angulo=anguloInicial; angulo<=anguloFinal; angulo += (anguloFinal-anguloInicial)/N) {
x = r1*cos(angulo);
y = r1*sin(angulo);
// vértice en la base
vertex(x, y, 0);
x = r2*cos(angulo);
y = r2*sin(angulo);
// vértice en la tapa
vertex(x, y, h);
}
endShape();
}
```
## Cono-cilindro 2
![](/img/cilindrocono-complejo.png)