cilindros con rango de ángulos
This commit is contained in:
parent
1d48181839
commit
5d926f3e8c
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue