2010-05-23 4 views
2

La bibliothèque d'images pixman peut dessiner des dégradés de couleurs radiaux entre deux cercles. Je voudrais que le dégradé radial remplisse complètement une zone rectangulaire définie par "largeur" ​​et "hauteur". Maintenant, ma question, comment devrais-je choisir le rayon du cercle extérieur?Choix du rayon du cercle pour remplir entièrement un rectangle

Mes paramètres actuels sont les suivants:

A) inner circle (start of gradient) 
center pointer of inner circle: (width*0.5|height*0.5) 
radius of inner circle: 1 
color: black 

B) outer circle (end of gradient) 
center pointer of outer circle: (width*0.5|height*0.5) 
radius of outer circle: ??? 
color: white 

Comment choisir le rayon du cercle extérieur pour faire en sorte que le cercle extérieur sera entièrement remplir mon rectangle de délimitation défini par la largeur * hauteur. Il ne doit pas y avoir de zones vides dans les coins, la zone doit être complètement couverte par le cercle. En d'autres termes, la largeur du rectangle englobant, la hauteur doit entièrement tenir dans le cercle extérieur. Le choix

outer_radius = max(width, height) * 0.5 

que le rayon du cercle extérieur est évidemment pas suffisant. Ça doit être plus gros, mais combien plus gros?

Merci!

Répondre

4

Le diamètre du cercle doit être la diagonale du rectangle, que vous pouvez facilement calculer à partir du théorème de Pythagore. à savoir:

outer_radius = 0.5 * sqrt(width * width + height * height)

0

Il est juste Pythagoras:

outer_radius = sqrt((width/2)^2 + (height/2)^2); 

ou plus simplement:

outer_radius = sqrt(width^2 + height^2)/2; 
-1

Faire un petit croquis, et appliquer le théorème de Pythagore:

[image esquisse utilisée pour aller ici; lien est rompu, et l'hôte est signalé comme les logiciels malveillants maintenant de toute façon]

Dans le code:

outer_radius = sqrt(0.25 * (width*width + height*height)) 
0

Votre question n'est pas clair, mais peut-être que vous voulez sqrt (w^2 + h^2)/2

Il s'agit de la distance entre le centre du rectangle et son coin.

0

Utilisation Pythagore:

outer_radius = sqrt(width*width + height*height)*0.5 
0

vous voulez que la longueur de l'hypoténuse d'un triangle rectangle dont les côtés égaux largeur/hauteur et 2/2. Alternativement, la moitié de la longueur de la diagonale du rectangle. racine carrée de (h/2^2 + p/2^2) ou 1/2 * racine carrée de (h^2 + w^2)

Questions connexes