Suite

Puis-je spécifier un point et obtenir toutes les entités dans un certain rayon de ce point ?

Puis-je spécifier un point et obtenir toutes les entités dans un certain rayon de ce point ?


Je suis récemment passé à QGIS à partir d'ArcGIS et je recherche de l'aide/des pointeurs avec les éléments suivants :

QGIS a-t-il une méthode par laquelle je peux spécifier une coordonnée lat-lon (ou des coordonnées utm x,y, système de coordonnées non imp) et obtenir toutes les caractéristiques qui se trouvent dans un certain rayon de ce point?

J'ai téléchargé les plugins tiers pour QGIS et après les avoir tous parcourus, je n'ai rien trouvé avec cette fonctionnalité (même si j'aurais très bien pu ne pas comprendre quelque chose complètement). J'envisage d'écrire un plugin au cas où quelque chose n'existerait pas déjà

Edit : j'ai regardé l'option sous : View -> Select -> Select Features By Radius. Cela semble être similaire dans le concept à ce que je vise à faire (sauf que le centre doit être spécifié).


Je ne connais pas ce genre de plugin. Mais si vous souhaitez le développer, vous trouverez le code source de "Select Features By Radius" dans le plugin "Select Plus". Il devrait être assez simple d'ajouter un formulaire de saisie pour entrer les coordonnées et le rayon au lieu de les spécifier à la souris.


Comme je l'ai noté dans les commentaires, je pense que vous pouvez simplement dessiner quatre cercles et voir s'ils se croisent, mais bon, allons trop loin.

Comme indiqué dans les commentaires, il semble y avoir deux interprétations possibles de votre problème. Les deux interprétations peuvent être résolues en utilisant la programmation convexe.

Interprétation 1 : Trouver un point qui se trouve à une distance fixe $d$ de chaque d'un ensemble de $m$ points, $p_1,dots,p_m$ , chacun vivant dans $mathbb^n$ (dans votre question, vous sous-entendez $n=2$ , mais bon, soyons fous). Cela peut être formulé comme le programme convexe suivant (techniquement un programme conique de second ordre, ou SOCP). $ début min & 0 exte & |x-p_i|leq ext< pour tout >i=1,dots,m end $ La fonction objectif est égale à zéro puisque nous ne cherchons qu'à trouver un point réalisable. En général, il peut y avoir (indénombrablement infiniment) beaucoup de points réalisables, et cette formulation nous permet d'ajouter des choses à la fonction objectif. Par exemple, nous voulons peut-être choisir le point $x$ pour qu'il soit aussi proche que possible de $p_1$. Alors notre problème d'optimisation est $ egin min & |x-p_1| exte & |x-p_i|leq ext< pour tout >i=1,dots,m end $ De peut-être voulons-nous minimiser la distance moyenne entre $x$ et tous les points $p_i$ : $ egin min & displaystylefrac<1>somme_^m|x-p_i| exte & |x-p_i|leq ext< pour tout >i=1,dots,m end $ Vous voyez l'idée.

Interprétation 2 : Trouver un point tel que le total la distance entre $p_i$ et $x$ est inférieure ou égale à $d$ . C'est encore un programme convexe : $ egin min & 0 exte & displaystylesum_^m|x-p_i|leq finir $ Comme précédemment, nous pouvons changer la fonction objectif pour sélectionner parmi les multiples solutions optimales.

Résultats de calcul

Ce sont des programmes convexes très simples, et peuvent être résolus, par exemple, avec CVXPY. Voici un exemple d'interprétation 1, où l'on souhaite trouver le point avec la distance moyenne minimale à tous les autres points. Je le ferai en deux dimensions avec quatre cercles, comme le demande le PO.

Voici à quoi ressemble le résultat. Les quatre points $p_i$ sont en bleu, entourés de cercles de rayon $d=2$. La solution avec une distance moyenne minimale à chaque point bleu est indiquée en rouge.


A propos des masques

UNE masquer dans After Effects est un chemin utilisé comme paramètre pour modifier les attributs, les effets et les propriétés des calques. L'utilisation la plus courante d'un masque est la modification d'un canal alpha d'un calque, qui détermine la transparence du calque à chaque pixel. Une autre utilisation courante d'un masque est comme chemin le long duquel animer du texte. (Voir Création et animation de texte sur un tracé.)

Pour plus d'informations sur les chemins en général, consultez À propos des chemins.

Les masques à chemin fermé peuvent créer des zones transparentes pour un calque. Les chemins ouverts ne peuvent pas créer de zones transparentes pour un calque mais sont utiles en tant que paramètres pour un effet. Les effets qui peuvent utiliser un chemin de masque ouvert ou fermé en entrée incluent le trait, le texte du chemin, la forme d'onde audio, le spectre audio et Vegas. Les effets pouvant utiliser des masques fermés (mais pas des masques ouverts) en entrée incluent Remplissage, Smear, Reshape, Particle Playground et Inner/Outer Key.

Un masque appartient à un calque spécifique. Chaque calque peut contenir plusieurs masques.

Vous pouvez dessiner des masques dans des formes géométriques courantes, notamment des polygones, des ellipses et des étoiles, avec les outils de forme, ou vous pouvez utiliser l'outil Plume pour tracer un chemin arbitraire.

Dans la plupart des cas, dessiner des chemins de masque est identique à dessiner des chemins de forme sur des calques de forme, bien que l'édition et l'interpolation des chemins de masque aient quelques fonctionnalités supplémentaires. Vous pouvez lier un chemin de masque à un chemin de forme à l'aide d'expressions, ce qui vous permet d'apporter les avantages des masques dans les calques de forme, et vice versa. Voir Création de formes et de masques et Modification et animation de chemins de formes et de masques.

La position d'un masque dans l'ordre d'empilement du panneau Montage affecte la manière dont il interagit avec les autres masques. Vous pouvez faire glisser un masque vers différentes positions dans le groupe de propriétés Masques du panneau Montage.

La propriété Opacité du masque d'un masque détermine l'influence d'un masque fermé sur le canal alpha du calque à l'intérieur de la zone de masque. Une valeur d'opacité du masque de 100 % correspond à une zone intérieure opaque. La zone à l'extérieur du masque est toujours transparente. Pour inverser ce qui est considéré à l'intérieur et ce qui est considéré à l'extérieur pour un masque spécifique, sélectionnez Inverser en regard du nom du masque dans le panneau Montage.


Syntaxe

Le raster de surface en entrée. Il peut s'agir d'un nombre entier ou d'un raster à virgule flottante.

Le raster en entrée est transformé en un système de coordonnées géocentriques 3D lors du calcul de visibilité. Les cellules NoData sur le raster en entrée ne bloquent pas la détermination de la visibilité.

Classe d'entités en entrée qui identifie les emplacements des observateurs. Il peut s'agir d'entités ponctuelles, multipoints ou polylignes.

La classe d'entités en entrée est transformée en un système de coordonnées géocentriques 3D lors du calcul de visibilité. Les observateurs en dehors de l'étendue du raster de surface ou situés sur des cellules NoData seront ignorés dans le calcul.

Pour le type d'analyse FRÉQUENCE, lorsque le paramètre d'erreur verticale est 0 ou n'est pas spécifié, le raster en sortie enregistre le nombre de fois que chaque emplacement de cellule dans le raster de surface en entrée peut être vu par les points d'observation en entrée. Lorsque le paramètre d'erreur verticale est supérieur à 0, chaque cellule du raster en sortie enregistre la somme des probabilités que la cellule soit visible pour l'un des observateurs. Pour le type d'analyse OBSERVATEURS, le raster en sortie enregistre les ID de région uniques pour les zones visibles, qui peuvent être liés aux entités d'observation via la table de relations observateur-région en sortie.

Raster en sortie au-dessus du niveau du sol (AGL).

Le résultat AGL est un raster où chaque valeur de cellule est la hauteur minimale qui doit être ajoutée à une cellule autrement non visible pour la rendre visible par au moins un observateur. Les cellules qui étaient déjà visibles se verront attribuer 0 dans ce raster en sortie.

Lorsque le paramètre d'erreur verticale est égal à 0, le raster AGL en sortie est un raster à une bande. Lorsque l'erreur verticale est supérieure à 0, pour tenir compte des effets aléatoires du raster en entrée, le raster AGL en sortie est créé en tant que raster à trois canaux. La première bande représente les valeurs AGL moyennes, la deuxième bande représente les valeurs AGL minimales et la troisième bande représente les valeurs AGL maximales.

Choisissez le type d'analyse de visibilité que vous souhaitez effectuer, soit en déterminant la visibilité de chaque cellule pour les observateurs, soit en identifiant pour chaque emplacement de surface quels observateurs sont visibles.

  • FREQUENCY —La sortie enregistre le nombre de fois où chaque emplacement de cellule dans le raster de surface en entrée peut être vu par les emplacements d'observation en entrée (sous forme de points ou de sommets pour les entités d'observation polyligne). C'est la valeur par défaut.
  • OBSERVATEURS — La sortie identifie exactement quels points d'observation sont visibles à partir de chaque emplacement de surface raster. Le nombre maximum autorisé d'observateurs d'entrée est de 32 avec ce type d'analyse.

La quantité d'incertitude (l'erreur quadratique moyenne ou RMSE) dans les valeurs d'élévation de la surface. Il s'agit d'une valeur à virgule flottante représentant l'erreur attendue des valeurs d'élévation d'entrée. Lorsque ce paramètre reçoit une valeur supérieure à 0, le raster de visibilité en sortie sera à virgule flottante. Dans ce cas, chaque valeur de cellule sur le raster de visibilité en sortie représente la somme des probabilités que la cellule soit visible pour l'un des observateurs.

Lorsque le type d'analyse est OBSERVERS ou que la méthode d'analyse est PERIMETER_SIGHTLINES , ce paramètre est désactivé.

La table de sortie pour identifier les régions qui sont visibles pour chaque observateur. Cette table peut être liée à la classe d'entités d'observateur en entrée et au raster de visibilité en sortie pour identifier les régions visibles pour des observateurs donnés.

Cette sortie n'est créée que lorsque le type d'analyse est OBSERVATEURS .

Coefficient de réfraction de la lumière visible dans l'air.

Cette valeur indique une distance verticale (en unités de surface) à ajouter à la valeur z de chaque cellule cible telle qu'elle est prise en compte pour la visibilité. Il doit s'agir d'un entier positif ou d'une valeur à virgule flottante.

Il peut s'agir d'un champ dans le jeu de données d'entités d'observation en entrée ou d'une valeur numérique. Si ce paramètre est défini sur une valeur, alors cette valeur sera appliquée à tous les observateurs. Pour spécifier des valeurs différentes pour chaque observateur, définissez ce paramètre sur un champ dans le jeu de données des entités d'observateur en entrée.

Cette valeur est utilisée pour définir les élévations de surface des points d'observation ou des sommets.

Il peut s'agir d'un champ dans le jeu de données d'entités d'observation en entrée ou d'une valeur numérique. Si ce paramètre n'est pas spécifié, l'altitude de l'observateur sera obtenue à partir du raster de surface à l'aide d'une interpolation bilinéaire. Si ce paramètre est défini sur une valeur, alors cette valeur sera appliquée à tous les observateurs. Pour spécifier des valeurs différentes pour chaque observateur, définissez ce paramètre sur un champ dans le jeu de données d'entités d'observateur en entrée.

Cette valeur indique une distance verticale (en unités de surface) à ajouter à l'altitude de l'observateur. Il doit s'agir d'un entier positif ou d'une valeur à virgule flottante.

Il peut s'agir d'un champ dans le jeu de données d'entités d'observation en entrée ou d'une valeur numérique. Si ce paramètre est défini sur une valeur, alors cette valeur sera appliquée à tous les observateurs. Pour spécifier des valeurs différentes pour chaque observateur, définissez ce paramètre sur un champ dans le jeu de données d'entités d'observateur en entrée.

Cette valeur définit la distance de départ (minimum) à partir de laquelle la visibilité est déterminée. Les cellules plus proches que cette distance sont considérées comme non visibles dans la sortie, mais peuvent toujours bloquer la visibilité des cellules entre le rayon intérieur et le rayon extérieur. La valeur par défaut est 0.

Il peut s'agir d'un champ dans le jeu de données d'entités d'observation en entrée ou d'une valeur numérique. Si ce paramètre est défini sur une valeur, alors la valeur sera appliquée à tous les observateurs. Pour spécifier des valeurs différentes pour chaque observateur, définissez ce paramètre sur un champ dans le jeu de données des entités d'observateur en entrée.

Type de distance pour le paramètre de rayon interne.

  • GROUND —Le rayon intérieur doit être interprété comme une distance 2D. C'est la valeur par défaut.
  • 3D : le rayon intérieur doit être interprété comme une distance 3D.

Cette valeur définit la distance maximale à partir de laquelle la visibilité est déterminée. Les cellules au-delà de cette distance sont exclues de l'analyse.

Il peut s'agir d'un champ dans le jeu de données d'entités d'observation en entrée ou d'une valeur numérique. Si ce paramètre est défini sur une valeur, alors la valeur sera appliquée à tous les observateurs. Pour spécifier des valeurs différentes pour chaque observateur, définissez ce paramètre sur un champ dans le jeu de données des entités d'observateur en entrée.

Type de distance pour le paramètre de rayon extérieur.

  • GROUND —Le rayon extérieur doit être interprété comme une distance 2D. C'est la valeur par défaut.
  • 3D : le rayon extérieur doit être interprété comme une distance 3D.

Cette valeur définit l'angle de départ de la plage de balayage horizontal. La valeur doit être spécifiée en degrés de 0 à 360,0, avec 0 orienté vers le nord. La valeur par défaut est 0.

Il peut s'agir d'un champ dans le jeu de données d'entités d'observation en entrée ou d'une valeur numérique. Si ce paramètre est défini sur une valeur, alors la valeur sera appliquée à tous les observateurs. Pour spécifier des valeurs différentes pour chaque observateur, définissez ce paramètre sur un champ dans le jeu de données d'entités d'observateur en entrée.

Cette valeur définit l'angle de fin de la plage de balayage horizontal. La valeur doit être spécifiée en degrés de 0 à 360,0, avec 0 orienté vers le nord. La valeur par défaut est 360,0.

Il peut s'agir d'un champ dans le jeu de données d'entités d'observation en entrée ou d'une valeur numérique. Si ce paramètre est défini sur une valeur, alors la valeur sera appliquée à tous les observateurs. Pour spécifier des valeurs différentes pour chaque observateur, définissez ce paramètre sur un champ dans le jeu de données d'entités d'observateur en entrée.

Cette valeur définit la limite supérieure de l'angle vertical du balayage au-dessus d'un plan horizontal. La valeur doit être spécifiée en degrés de 0 à 90,0, ce qui peut être un entier ou une virgule flottante. La valeur par défaut est 90,0.

Il peut s'agir d'un champ dans le jeu de données d'entités d'observation en entrée ou d'une valeur numérique. Si ce paramètre est défini sur une valeur, alors la valeur sera appliquée à tous les observateurs. Pour spécifier des valeurs différentes pour chaque observateur, définissez ce paramètre sur un champ dans le jeu de données des entités d'observateur en entrée.

Cette valeur définit la limite inférieure de l'angle vertical du balayage au-dessous d'un plan horizontal. La valeur doit être spécifiée en degrés de -90,0 à 0, ce qui peut être un entier ou une virgule flottante. La valeur par défaut est -90,0.

Il peut s'agir d'un champ dans le jeu de données d'entités d'observation en entrée ou d'une valeur numérique. Si ce paramètre est défini sur une valeur, alors la valeur sera appliquée à tous les observateurs. Pour spécifier des valeurs différentes pour chaque observateur, définissez ce paramètre sur un champ dans le jeu de données des entités d'observateur en entrée.

Choisissez la méthode par laquelle la visibilité sera calculée. Cette option vous permet d'échanger une certaine précision contre des performances accrues.

  • ALL_SIGHTLINES —Une ligne de visée est appliquée à chaque cellule du raster afin d'établir des zones visibles. C'est la méthode par défaut.
  • PERIMETER_SIGHTLINES — Les lignes de visée ne sont exécutées que vers les cellules situées sur le périmètre des zones visibles afin d'établir des zones de visibilité. Cette méthode a de meilleures performances que la méthode ALL_SIGHTLINES car moins de lignes de visée sont exécutées dans le calcul.

3 réponses 3

Je n'ai aucune preuve à apporter et je n'ai pas parlé aux développeurs, alors prenez simplement ce que je dis comme mon opinion personnelle basée sur l'expérience d'utilisation.

De nombreux curseurs dans Blender ont des valeurs plafonnées à certaines valeurs. Leur but est d'éviter les plantages du logiciel causés, par exemple, par des calculs intenses. Un exemple célèbre est l'étape 6 pour le modificateur Subdivision Surface. Sans cela, l'utilisateur occasionnel peut facilement cliquer et faire glisser la valeur et il obtiendra probablement une fenêtre de gel qui peut gâcher une heure de travail.

Les « étapes d'arrêt » peuvent être considérées comme une aide pour empêcher les comportements que les utilisateurs ne souhaitent généralement pas : ils constituent un seuil qui vous avertit : « avant de franchir cette ligne, réfléchissez à deux fois ce que vous faites. Est-ce ce que vous voulez vraiment « êtes-vous conscient des conséquences de vos actions ?".

Alors pourquoi limiter la taille d'un objet à 100 unités peut être utile ?

Je dirais que tout est lié à la scène par défaut. Alors que tout le monde aime supprimer le cube par défaut, peu ont tendance à effacer la caméra, ou s'ils le font, la commande Ajouter une caméra en place un qui a une chose en commun avec le cube par défaut : le limites d'écrêtage.

Le Fin du découpage est toujours réglé sur 100 unités, donc rendre les objets plus gros que cela ne garantirait pas qu'ils seront contenus dans le tronc, et donc visibles depuis la came. En ce sens, placer une "étape d'arrêt" est une aide pour éviter d'ajouter une géométrie qui ne peut être vue que si vous êtes vraiment sûr que c'est ce que vous voulez faire.

Le "100 Stop Step" existe en fait dans toutes les primitives par défaut (Plan, Circle, UV Sphere, Ico SPhere, Cone, Torus, Suzanne. ) mais seulement dans l'objet Torus ne peut pas être dépassé. Ma supposition folle serait que c'est le code qui n'a pas encore été mis à jour (dans Blender 2.45 chaque primitive avait la limite).


Dimension de Hausdorff de l'ensemble des nombres rationnels dans un certain intervalle ?

Introduction : La dimension de Hausdorff (également connue sous le nom de dimension de Hausdorff-Besicovitch) est un nombre réel étendu non négatif associé à tout espace métrique. En général la dimension de Hausdorff généralise la notion de dimension d'un espace vectoriel réel. C'est-à-dire que la dimension de Hausdorff d'un espace de produit interne à n dimensions est égale à $n$. Cela signifie, par exemple, que la dimension Hausdorff d'un point est zéro, la dimension Hausdorff d'une ligne est un et la dimension Hausdorff du plan est deux. Il existe cependant de nombreux ensembles irréguliers qui ont une dimension de Hausdorff non entière. Bon nombre des développements techniques utilisés pour calculer la dimension de Hausdorff pour des ensembles très irréguliers ont été obtenus par Besicovitch.

Intuitivement, considérons le nombre $N(r)$ de boules de rayon au plus $r$ requis pour couvrir complètement $X$. Lorsque $r$ est petit, $N(r)$ est grand. Pour un ensemble $X$ « bien élevé », la dimension de Hausdorff est le nombre unique $d$ tel que $N(r)$ croît de 1/rd lorsque r tend vers zéro. Plus précis voir ici>>>.

Ayant en arrière-plan la vraie droite numérique en tête, je me bats, comment trouver :

Quelle est la dimension de Hausdorff de l'ensemble des nombres rationnels dans un certain intervalle ?


Réplication

Puis-je répliquer via un VPN de site à site vers Azure ?

Azure Site Recovery réplique les données vers un compte de stockage Azure ou des disques managés, sur un point de terminaison public. La réplication ne se fait pas via un VPN de site à site.

Pourquoi ne puis-je pas répliquer via VPN ?

Lorsque vous répliquez vers Azure, le trafic de réplication atteint les points de terminaison publics d'un stockage Azure. Ainsi, vous ne pouvez répliquer que sur l'Internet public ou via ExpressRoute (Microsoft peering ou un peering public existant).

Puis-je utiliser Riverbed SteelHeads pour la réplication ?

Notre partenaire, Riverbed, fournit des conseils détaillés sur l'utilisation d'Azure Site Recovery. Consultez leur guide de solutions.

Puis-je utiliser ExpressRoute pour répliquer des machines virtuelles vers Azure ?

Oui, ExpressRoute peut être utilisé pour répliquer des machines virtuelles locales vers Azure.

  • Azure Site Recovery réplique les données vers un stockage Azure sur un point de terminaison public. Vous devez configurer le peering Microsoft ou utiliser un peering public existant (déconseillé pour les nouveaux circuits) pour utiliser ExpressRoute pour la réplication de Site Recovery.
  • Le peering Microsoft est le domaine de routage recommandé pour la réplication.
  • La réplication n'est pas prise en charge sur le peering privé.
  • Si vous protégez des machines VMware ou des machines physiques, assurez-vous que les exigences de mise en réseau pour le serveur de configuration sont également respectées. La connectivité à des URL spécifiques est requise par Configuration Server pour l'orchestration de la réplication de Site Recovery. ExpressRoute ne peut pas être utilisé pour cette connectivité.
  • Une fois les machines virtuelles basculées vers un réseau virtuel Azure, vous pouvez y accéder à l'aide de la configuration d'appairage privé avec le réseau virtuel Azure.

Si je réplique vers Azure, de quel type de compte de stockage ou de disque managé ai-je besoin ?

L'utilisation de comptes de stockage comme stockage cible n'est pas prise en charge par Azure Site Recovery. Il est recommandé d'utiliser plutôt des disques managés comme stockage cible pour vos machines. Les disques managés ne prennent en charge que le type LRS pour la résilience des données.

À quelle fréquence puis-je répliquer des données ?

  • Hyper-V : Les machines virtuelles Hyper-V peuvent être répliquées toutes les 30 secondes (sauf pour le stockage premium), cinq minutes ou 15 minutes.
  • VM Azure, VM VMware, serveurs physiques : Une fréquence de réplication n'est pas pertinente ici. La réplication est continue.

Puis-je étendre la réplication d'un site de récupération existant vers un autre site tertiaire ?

La réplication étendue ou chaînée n'est pas prise en charge. Demandez cette fonctionnalité dans le forum de commentaires.

Puis-je effectuer une réplication hors ligne la première fois que je réplique vers Azure ?

Ce n'est pas pris en charge. Demandez cette fonctionnalité dans le forum de commentaires.

Puis-je exclure des disques spécifiques de la réplication ?

Ceci est pris en charge lorsque vous répliquez des machines virtuelles VMware et Hyper-V vers Azure, à l'aide du portail Azure.

Puis-je répliquer des machines virtuelles avec des disques dynamiques ?

Les disques dynamiques sont pris en charge lors de la réplication de machines virtuelles Hyper-V et lors de la réplication de machines virtuelles VMware et de machines physiques vers Azure. Le disque du système d'exploitation doit être un disque de base.

Puis-je limiter la bande passante allouée au trafic de réplication ?

Oui. Vous pouvez en savoir plus sur la limitation de la bande passante dans ces articles :

Puis-je activer la réplication avec la cohérence des applications sur les serveurs Linux ?

Oui. Azure Site Recovery pour le système d'exploitation Linux prend en charge les scripts personnalisés d'application pour la cohérence des applications. Le script personnalisé avec pré et post-options sera utilisé par l'agent de mobilité Azure Site Recovery lors de la cohérence des applications. Vous trouverez ci-dessous les étapes pour l'activer.

Connectez-vous en tant que root à la machine.

Remplacez le répertoire par l'emplacement d'installation de l'agent de mobilité Azure Site Recovery. La valeur par défaut est "/usr/local/ASR"
# cd /usr/local/ASR

Changez le répertoire en "VX/scripts" sous l'emplacement d'installation
# cd VX/scripts

Créez un script shell bash nommé "customscript.sh" avec des autorisations d'exécution pour l'utilisateur root.
une. Le script doit prendre en charge les options de ligne de commande "--pre" et "--post" (notez les doubles tirets)
b. Lorsque le script est appelé avec une pré-option, il doit geler les entrées/sorties de l'application et lorsqu'il est appelé avec une post-option, il doit dégeler les entrées/sorties de l'application.
c. Un exemple de modèle -

  1. Ajoutez les commandes d'entrée/sortie de gel et de dégel dans les étapes pré et post pour les applications nécessitant la cohérence des applications. Vous pouvez choisir d'ajouter un autre script en les spécifiant et de l'invoquer à partir de "customscript.sh" avec des pré et post-options.

La version de l'agent Site Recovery doit être 9.24 ou supérieure pour prendre en charge les scripts personnalisés.


Comment mettre à l'échelle SVG

Ce qui suit est un article invité par Amelia Bellamy-Royds. Amelia a beaucoup d'expérience avec SVG, en tant que co-auteur de SVG Essentials et auteur du prochain Using SVG with CSS3 and HTML5 . Amelia et moi parlerons également de SVG au prochain RWD Summit ! Ici, elle partage un guide épique sur la mise à l'échelle de SVG, couvrant toutes les façons dont vous pourriez vouloir le faire. Ce n'est pas aussi simple que de mettre à l'échelle des graphiques raster, mais cela peut être une bonne chose, car cela ouvre des possibilités intéressantes.

Vous avez pris la décision. Vous allez enfin le faire. Cette année, vous allez commencer à utiliser SVG dans vos conceptions Web. Vous créez un fabuleux logo d'en-tête dans Inkscape et vous copiez et collez le code SVG qu'il crache dans votre fichier d'en-tête WordPress. Bien sûr, vous n'abandonnez pas la résolution de l'année dernière pour toujours utiliser un design réactif, alors vous définissez svg.banner < largeur: 100% hauteur: auto > dans votre CSS et vous pensez que vous avez défini.

Jusqu'à ce que vous ouvriez votre page Web dans des navigateurs de test et découvriez que certains laissent d'énormes blocs d'espaces au-dessus et en dessous de l'image, tandis que d'autres la recadrent trop court.

SVG signifie Scalable Vector Graphics. Donc, la mise à l'échelle de SVG devrait être facile, n'est-ce pas ? N'est-ce pas ce que les défenseurs du SVG ont toujours dit, que le SVG a fière allure quelle que soit sa taille ? C'est le cas, mais pourtant ce n'est pas le cas. SVG a fière allure à n'importe quelle échelle, mais il peut évoluer de tellement de manières différentes que le faire se comporter exactement comme vous le souhaitez peut être déroutant pour les débutants en SVG. Cela n'aide pas que les navigateurs n'aient que récemment commencé à adopter une approche standard pour dimensionner le contenu SVG en ligne.

Une partie de la raison pour laquelle la mise à l'échelle de SVG est si difficile est que nous avons une certaine idée de la façon dont les images devrait scale, et SVG ne se comporte pas de la même manière.

Les images raster telles que JPG, PNG et GIF ont une taille clairement définie. Le fichier image décrit comment le navigateur doit colorer une grille d'un certain nombre de pixels de large et d'un certain nombre de pixels de haut. Un effet secondaire important est que les images raster ont un ratio d'aspect: le rapport largeur/hauteur.

Vous pouvez forcer le navigateur à dessiner une image raster à une taille différente de sa hauteur et de sa largeur intrinsèques, mais si vous la forcez à un rapport hauteur/largeur différent, les choses seront déformées. Pour cette raison, depuis les premiers jours du Web, la mise à l'échelle automatique des images est prise en charge : vous définissez la hauteur ou alors la largeur et le navigateur ajuste l'autre dimension afin que le rapport hauteur/largeur reste constant.

Voir les bases de la mise à l'échelle de l'image du stylo par Amelia Bellamy-Royds (@AmeliaBR) sur CodePen.

Les images SVG, en revanche, peuvent être dessinées à n'importe quelle taille de pixel, elles n'ont donc pas besoin d'une hauteur ou d'une largeur clairement définies. Et ils n'auront pas toujours un rapport d'aspect clairement défini. Vous devrez fournir explicitement ces informations (et plus) si vous souhaitez que le SVG s'adapte aux dimensions que vous lui donnez.

Si vous ne le faites pas, SVG ne sera pas du tout mis à l'échelle. L'exemple suivant utilise le SVG en ligne, en ajustant les dimensions de l'élément (ligne pointillée), sans jamais modifier la taille du graphique dessiné :

Voir le Pen Non-Scaling SVG d'Amelia Bellamy-Royds (@AmeliaBR) sur CodePen.

Pourquoi se comporte-t-il ainsi ? Parce que SVG n'est pas (juste) une image. SVG est un document. Bien que l'exemple ci-dessus utilise du SVG en ligne, il aurait tout aussi bien pu utiliser <object> ou <iframe> . Cela aurait exactement la même apparence même si vous utilisiez les balises <img> pour intégrer le même code SVG.

Lorsque vous incluez un fichier HTML avec un <iframe> , vous ne vous attendez pas à ce que le texte à l'intérieur soit mis à l'échelle lorsque vous modifiez la taille du cadre. Idem avec SVG. Par défaut, il sera dessiné à la taille spécifiée dans le code, quelle que soit la taille du canevas. Que se passe-t-il si vous définissez la hauteur ou la largeur (ou les deux) sur auto pour ces SVG ? La taille par défaut des éléments remplacés HTML sera utilisée : 300 px de large, 150 px de haut. Cela s'applique à <img> , <object> ou <iframe> . La taille par défaut de 300𴡮 s'applique également aux éléments <svg> en ligne dans les documents HTML, mais il s'agit d'un consensus relativement récent des spécifications HTML5 : les autres navigateurs étendront par défaut le SVG en ligne à la taille complète de la fenêtre d'affichage, ce qui équivaut à la largeur : 100vw hauteur : 100vh — qui est la taille par défaut pour les fichiers SVG qui sont ouverts directement dans leur propre onglet de navigateur. Internet Explorer fait la différence en utilisant une largeur de 100 % et une hauteur de 150 pixels pour les images et le SVG en ligne.

En d'autres termes, même si vous pensez que 300𴡮 est une taille d'image parfaite (mais pourquoi le feriez-vous ?), ne comptez pas sur une taille par défaut pour <svg> en HTML.

En plus de décider de la taille que vous voulez pour votre SVG, vous devrez également décider comment vous vouloir votre graphique à l'échelle pour s'adapter à cette taille. Ci-dessous, je décris le code dont vous avez besoin pour obtenir l'échelle que vous souhaitez pour les situations les plus courantes :

  • Mise à l'échelle pour s'adapter à une certaine taille, sans déformer l'image
  • Mise à l'échelle pour s'adapter à une certaine taille, étirement ou compression du graphique si nécessaire
  • Mise à l'échelle pour s'adapter à la largeur disponible, tout en maintenant le rapport largeur/hauteur
  • Mise à l'échelle de manière non uniforme, de sorte que certaines parties de l'échelle graphique diffèrent des autres

Mais d'abord : si vous voulez prendre le contrôle de l'échelle de votre SVG, vous devrez vous familiariser avec les attributs de mise à l'échelle SVG et les autres outils disponibles.

D'autres images évoluent car le navigateur connaît la hauteur, la largeur et le rapport hauteur/largeur de l'image, et il ajuste tout ensemble. Donner à SVG ces propriétés est la première étape pour le mettre à l'échelle. Cependant, la mise à l'échelle SVG va au-delà de ce qui est possible avec d'autres images.

Les attributs de hauteur et de largeur

Un premier coup d'œil aux spécifications SVG suggérerait que les attributs de hauteur et de largeur sur l'élément svg de niveau supérieur définiront implicitement un rapport hauteur/largeur et rendront donc l'échelle SVG comme les autres images. Il est vrai que le réglage de la hauteur et de la largeur remplacera les dimensions par défaut lorsque vous utilisez SVG comme image. Mais bien sûr, ce n'est pas si facile :

  • Si vous utilisez un <img> pour intégrer votre SVG, le réglage de la hauteur et de la largeur rendra l'échelle SVG prévisible dans plus navigateurs, mais pas dans Internet Explorer. Avec des CSS comme img < largeur : 100 % hauteur : auto >, IE redimensionnera automatiquement la zone de l'image pour garder le rapport largeur: hauteur constant, mais il ne redimensionnera pas le dessin réel pour qu'il corresponde à l'échelle des dimensions de l'image.
  • Si vous utilisez un <object> , <embed> ou <iframe> pour intégrer votre SVG, le réglage de la hauteur et de la largeur sur le <svg> ne changera pas la taille du cadre, vous obtiendrez simplement des barres de défilement dans votre iframe si le SVG est trop grand.
  • Si vous utilisez du SVG en ligne (c'est-à-dire <svg> directement dans votre code HTML5), l'élément <svg> a une double fonction, définissant la zone d'image dans la page Web ainsi que dans le SVG. Toute hauteur ou largeur que vous définissez pour le SVG avec CSS remplacera les attributs de hauteur et de largeur sur le <svg> . Donc une règle comme svg annulera les dimensions et le rapport hauteur/largeur que vous avez définis dans le code et vous donnera la hauteur par défaut pour le SVG en ligne. Qui, comme mentionné ci-dessus, sera soit 150px ou 100vh, selon le navigateur.

Oubliez donc la hauteur et la largeur. Vous ne voulez pas réellement définir le exact hauteur et largeur de toute façon, vous voulez que le SVG soit mis à l'échelle pour correspondre à la largeur et/ou à la hauteur que vous avez définies dans le CSS. Ce que vous voulez, c'est définir un ratio d'aspect pour l'image, et avoir l'échelle de dessin pour s'adapter. Vous voulez une viewBox .

La viewBox SVG est tout un tas de magie enroulée dans un petit attribut. C'est la dernière pièce qui crée des graphiques vectoriels Évolutif Graphiques vectoriels. La viewBox fait beaucoup de choses :

  • Il définit le rapport hauteur/largeur de l'image.
  • Il définit comment toutes les longueurs et coordonnées utilisées à l'intérieur du SVG doivent être mises à l'échelle pour s'adapter à l'espace total disponible.
  • Il définit l'origine du système de coordonnées SVG, le point où x=0 et y=0.

La viewBox est un attribut de l'élément <svg>. Sa valeur est une liste de quatre nombres, séparés par des espaces ou des virgules : x, y, largeur, hauteur. La largeur est la largeur en coordonnées utilisateur/unités px, dans le code SVG, qui doit être mis à l'échelle pour remplir la largeur de la zone dans laquelle vous dessinez votre SVG (la vuePort dans le jargon SVG). De même, la hauteur est le nombre de px/coordonnées qui doivent être mis à l'échelle pour remplir la hauteur disponible. Même si votre code SVG utilise d'autres unités, telles que les pouces ou les centimètres, celles-ci seront également mises à l'échelle pour correspondre à l'échelle globale créée par la viewBox .

Les nombres x et y spécifient la coordonnée, dans le système de coordonnées de la viewBox à l'échelle, à utiliser pour le coin supérieur gauche de la fenêtre SVG. (Les coordonnées augmentent de gauche à droite et de haut en bas, de la même manière que pour identifier les emplacements des pages en JavaScript). Pour une mise à l'échelle simple, vous pouvez définir les deux valeurs sur 0. Cependant, les valeurs x et y sont utiles à deux fins : pour créer un système de coordonnées avec une origine centrée dans le dessin (cela peut faciliter la définition et la transformation de formes), ou pour recadrer une image plus étroitement qu'elle n'a été définie à l'origine.

Quelques exemples de valeurs de viewBox :

  • viewBox="0 0 100 100" : Définit un système de coordonnées de 100 unités de large et 100 unités de haut. En d'autres termes, si votre SVG contient un cercle centré dans le graphique avec un rayon de 50px, il remplira la hauteur ou la largeur de l'image SVG, même si l'image était affichée en plein écran. Si votre SVG contenait un rectangle avec , il remplirait également presque l'écran, car 1 pouce = 96px en CSS, et toutes les longueurs seront mises à l'échelle de la même manière.
  • viewBox="5 0 90 100" : Presque la même vue, mais recadrée de 5% à gauche et à droite, de sorte que la largeur totale=90 unités et la coordonnée x à gauche=5.
  • viewBox="-50 -50 100 100" : Une vue avec la même échelle, mais maintenant avec le coin supérieur gauche étant donné les coordonnées (-50, -50). Ce qui signifie que le en bas à droite coin a les coordonnées (+50, +50). Toutes les formes dessinées à (100, 100) seront loin de l'écran. If you wanted to draw a circle that completely filled the image area, it would be centered at (0, 0).

Once you add a viewBox to your <svg> (and editors like Inkscape and Illustrator will add it by default), you can use that SVG file as an image, or as inline SVG code, and it will scale perfectly to fit within whatever size you give it. However, it still won’t scale quite like any other image. Par défaut, ce sera ne pas be stretched or distorted if you give it dimensions that don’t match the aspect ratio. Instead, the scale will be adjusted in order to preserve the aspect ratio defined in the code.

The preserveAspectRatio attribute

The viewBox attribute has a sidekick, preserveAspectRatio . It has no effect unless a viewBox exists to define the aspect ratio of the image. When there is a viewBox, preserveAspectRatio describes how the image should scale if the aspect ratio of the viewBox doesn’t match the aspect ratio of the viewport. Most of the time, the default behavior works pretty well: the image is scaled until it just fits both the height and width, and it is centered within any extra space.

Just like viewBox , preserveAspectRatio has a lot of information in a single attribute. The default behavior can be explicitly set with preserveAspectRatio="xMidYMid meet" . The first part, xMidYMid tells the browser to center the scaled viewBox region within the available viewport region, in both the x and y directions. You can replace Mid with Min or Max to align the graphic flush against one side or the other. Watch the camelCase capitalization, though: SVG is XML, and is therefore case sensitive. The x is lowercase but the Y is capital.

The second half of the default preserveAspectRatio , meet , is the part that tells the browser to scale the graphic until it just fits both height and width. It’s equivalent for CSS background images is background-size: contain . The alternative value for SVG is slice (equivalent to background-size: cover ). A slice value will scale the image to fit the more generous dimension, and slice off the extra. Except, it doesn’t necessarily tranche off the extra that depends on the value of the overflow property.

(Side note: If you wish every image could be centered in the dimensions you give it, instead of getting stretched or distorted, the new object-fit CSS property allows you to do the same with other image types.)

There’s also preserveAspectRatio="none" option to allow your SVG to scale exactly like a raster image (but with much better resolution), stretching or squishing to fit the height and width you give it.

How to Scale SVG to Fit within a Certain Size (without distorting the image)

Probably the most common requirement is to have an SVG icon scale to fit a specific size, without distortion. The viewBox attribute is really all you need here, although you can use preserveAspectRatio to adjust the alignment.

As mentioned, if you’re creating your SVG in a graphical editor, it’s probably already including a viewBox. However, you may want to adjust the viewBox to get the positioning just right. The pot-of-gold graphic has been given a viewBox="0 0 60 55" for the rest of the examples. That leaves some extra space around it to create a tight-cropped icon, you could use viewBox="4.5 1.5 51 49" . The following example also shows the effect of the default preserveAspectRatio , centering the graphic in the space provided:

How to Scale SVG to Fit the Available Width (and adjust the height to match)

SVG with a viewBox will scale to fit the height and width you give it. But what about auto-sizing? With raster images, you can set width ou alors height , and have the other scale to match. Can SVG do that?

It can, but it gets complicated. There are a couple different approaches to chose from, depending on how you are including your SVG.

Option 1: Use image auto-sizing

When an SVG file has a viewBox , and it is embedded within an <img> , browsers will (nearly always) scale the image to match the aspect ratio defined in the viewBox .

Internet Explorer, however, remains the bane of SVG. Although it normally works just fine, I used display: table-cell to lay out the figures in an earlier version of this example, and IE distorted the images in weird ways.

If you completely auto-size the image, Internet Explorer applies the standard default 300𴡮 size. However, other browsers will apply < width: 100% height: auto >by default if the image has a viewBox this behaviour is not defined in any specification.

So to recap: To auto-scale SVG used as <img> ,

  1. Set a viewBox attribute.
  2. Set at least un of height or width.
  3. Don’t put it inside a table layout if you care about supporting Internet Explorer.

Option 2: Use CSS Background Images and the padding-bottom Hack

For the most part, using SVG as a CSS background image works much the same way as using it in an <img> (but with the added benefit that you can define raster fallbacks for old browsers). There are a few bugs with older browsers scaling the image after converting it to raster instead of before (i.e. pixelating it), but for the most part the viewBox is all you need.

However, auto-sizing isn’t an option for CSS background images after all, the image is supposé to be secondary to the HTML content of the element. If you want the element to exactly match the aspect ratio of the image you’re going to use, you’re going to have to hack it a little bit.

There are a select number of CSS properties that allow you to adjust height-based attributes based on the available width. If you set the border , padding , or margin of a block-layout element to percentage values, the percentages will be calculated relative to the available largeur of the container, even for the Haut et bas borders, padding, and margin.

The intended purpose is to create evenly-sized borders and padding even when height is automatic. But that’s beside the point. For our purposes, the key point is that you can adjust the total height of an element in proportion to the width. In other words, you can control the aspect ratio. To create a <div> with 100% width that exactly matches the 4:3 aspect ratio of an image you’re using as its background, you can use:

  • To get the desired height as a percentage of the available width, you multiply the percentage width by the desired height factor, divided by the desired width factor.
  • If you want to support browsers that don’t support calc() , you’ll need to do the math yourself (or with a CSS pre-processor).
  • If you by default set every element to box-sizing: border-box , you’ll have to re-set it to use box-sizing: content-box . We want it to be height: 0 plus padding, after all.
  • The padding-bottom property is used instead of padding-top because of problems in IE5. Although you’re probably not worried about supporting IE5, you might as well be consistent. It is called the padding-bottom hack, after all.

For the pot-of-gold image, the aspect ratio was 60:55, which works out as bottom padding of 92%. In action, it looks like this:

Option 3: Use Inline SVG and the latest Blink/Firefox Browsers

SVG images are nice, but in many cases you’ll prefer to use inline SVG. Inline SVG reduces the number of HTTP requests, allows user interactions, and can be modified by the CSS in your main web page. But will it scale?

It will if you’re using the latest Firefox or Blink browsers. Just set the viewBox on your <svg> , and set one of height or width to auto . The browser will adjust it so that the overall aspect ratio matches the viewBox . Magnifique.

But chances are, these aren’t the only browsers you need to support.

Beaucoup browsers—IE, Safari, and versions of Opera and Chrome released prior to summer 2014—will not auto-size inline SVG. If you don’t specify both height and width, these browsers will apply their usual default sizes, which as mentioned previously will be different for different browsers. The image will scale to fit inside that height or width, again leaving extra whitespace around it. Again, there are also inconsistencies in what happens if you leave both height et width auto .

The solution is to again use the padding-bottom hack to control the aspect ratio yourself. The easiest approach, which works for inline SVG as well as <object> , <iframe> and other replaced elements like <video> , is to use a container element.

Option 4: Use the padding-bottom Hack on a Container

To use a container <div> , add classes or inline styles to the div to give it the correct aspect ratio, as was done above when using a background image. But also set position: relative on the container, so that it will become the reference frame for absolutely positioned content. Then set the SVG (or other object) to position: absolute , with height and width of 100%. The absolute positioning is required so that the percentages will be calculated relative to the height of the <div> comprenant the padding, and not relative to the zero-height content area.

Unless you have a lot of graphics with the same aspect ratio, it usually makes sense to declare the padding-bottom inline, so that it is right next to the viewBox it needs to match:

The container approach works, but at the cost of an extra wrapper element in your markup. And it isn’t a general-purpose container, either: it’s a container that has to be customized to the exact aspect ratio your SVG needs. Things get even trickier if you don’t want it to scale to a full 100% you’ll need to use another wrapper <div> to set the desired width and other positioning attributes. I personally would rather keep all information about the SVG aspect ratio in the SVG code itself. To do that for inline SVG, you’re going to need to tell the browser to draw outside the lines, and into the padding.

Option 5: Use the padding-bottom Hack on an Inline <svg> Element

To use the padding-bottom hack to control the aspect ratio of the total <svg> area, the official height is going to be (essentially) zero. With the default preserveAspectRatio value, the graphic would be scaled down to nothing. Instead, you want your graphic to stretch to cover the entire width you give it, and to spill out onto the padding area you have carefully set to the correct aspect ratio.

Again, I like to use inline styles for the padding-bottom aspect ratio, since it needs to be customized to the viewBox attribute. In the example that follows, I also use it for the other style properties, although you could use a class if you have many graphics that need the same effects:

There are a few other details in there:

  • The height is 1px, not 0, otherwise the SVG may not be drawn at all (Firefox) or may not scale at all (Chrome).
  • The preserveAspectRatio uses YMin for the vertical alignment, so that the graphic is aligned neatly against the top of the <svg> content area, spilling out into the bottom padding.
  • Although overflow: visible may be the default for HTML, it needs to be set explicitly for SVG.

If you want the SVG to scale to some percentage less than 100% width, remember to adjust padding-bottom accordingly. Or use a wrapper <div> to set the size.

How to Scale, Stretch, and Squish SVG to Exactly Fit a Certain Size

Although preserving the aspect ratio is usually desirable, sometimes the image is an abstract or flexible image that you want to stretch to fit.

One option to stretch to fit is to use percentage values for all size and position attributes in the SVG.

Things to note about percentages and SVG:

  • If you’re using percentages to stretch and squish, don’t include a viewBox (although you can specify default height and width).
  • Some lengths in SVG aren’t clearly associated with either height or width for example, the radius of a circle. If you use percentage values in these cases, the length will be calculated as a geometric average (square root of the sum of the squares, divided by square root of 2) of the equivalent percentage of height and width. This preserves the Pythagorean theorem relationship of diagonal lines to rectangular lines, but is otherwise somewhat confusing.
  • Many lengths in SVG ne peux pas be specified with percentages, most importantly the coordinates of <path> and <polygon> elements.

Option 2: Use preserveAspectRatio="none"

If you want a flexibly scaling SVG that also includes SVG paths, you need to use a viewBox plus preserveAspectRatio="none" . Here’s a slightly fancier version of that rainbow, with puffy cloud

Be aware that with preserveAspectRatio="none" , everything gets stretched or squished equally, just as if you were unevenly scaling other image types. That means that circles get stretched into ellipses, and text will be distorted as well. To avoid that, you’ll need to use a mixture of scaling approaches.

How to Scale Parts of an SVG Separately

The viewBox and preserveAspectRatio attributes are incredibly flexible. Once you stop thinking of SVG as just another image format, you can start asking yourself comment you want your graphic to scale as the window changes size.

An important thing to realize is that you don’t need to define a single viewBox and preserveAspectRatio option for the entire SVG. Instead, you can use nested <svg> elements, each with their own scaling attributes, to have different parts of your graphic scale independently. (You can also use these attributes on <symbol> and <pattern> elements, and you can use preserveAspectRatio on other images embedded in your SVG.) With this approach, you can create a header graphic that stretches to fill a widescreen display without taking excessive height as well:


The UCS Follow system variable

Changing from one UCS to another does not change the view of the drawing unless the UCSFOLLOW system variable is turned on (set to 1), in which case a plan view of the new UCS is displayed.

At the command prompt enter "UCSFOLLOW", AutoCAD prompts:

New value for UCSFOLLOW <0>:

Entering "1" turns UCSFOLLOW on and "0" turns UCSFOLLOW off.

UCSFOLLOW can be particularly useful if you are working in plan on a scheme which is orientated in such a way that it is awkward to work with. Rather than using the Tourner command to rotate the whole drawing you could set UCSFOLLOW à 1 and create a UCS which is in your preferred working orientation. UCSFOLLOW will then simply rotate your view (see the illustration below).

A plan view of a site in the
World co-ordinate system.
A plan view of the same site with
ucsfollow set to 1 and a UCS which
is rotated about the Z axis.


Planar Bubble (Clr7/Wiz7 spell, source: Spell Compendium) copies all planar traits from target creature's native plane. Area: 10-foot-radius, mobile duration: 10 minutes per casterlevel.

Planar Bubble (Planar Shepherd classfeature, ECL 10, source: Faiths of Eberron) same as the spell, except that a Planar Shepherd can only cast it on herself, and thus can't pick a different plane each time. Area: 20-foot-radius, mobile duration: concentration + 1d10 rounds.

Orrery of the Planes (item, 50,000gp, source: Eberron Campaign Setting) copies one magic trait from any outer plane. Area: 60-foot-radius, stationary while in use duration: no maximum duration, can be turned on an off.

Anchor Plane (Psion8 power, source: Faiths of Eberron) copies one planar trait from any plane. Area: 150-foot-radius, stationary duration: permanent.

Intensify Manifest Zone (Clr7/Druid7/Psion7, source: Faiths of Eberron) permanently adds one more planar trait to an existing manifest zone, such as the one created by Anchor Plane or Orrery of the Planes.

Precipitate Breach (Wiz5 spell, source: Planar Handbook) copies one alignment, elemental/energy, or magic trait. Unfortunately, you can't pick from which plane, it's just random. Area: 10d10-foot-radius, stationary duration: 1d6 days.

Precipitate Complete Breach (Wiz9 spell, source: Planar Handbook) creates an inter-planar portal whose surroundings (on both ends) are affected by all traits from both planes. Unfortunately, you still can't pick the destination, it's just random. Area: 10d10-foot-radius, stationary duration: 1d6 days.

Acorn of Far Travel (Druid2/Ranger2 spell, source: web) is probably not intended to interact with planar travel, the spell's author clearly didn't consider it. But a literal reading of "As long as you carry the acorn, you are considered to be standing under that oak tree's canopy (and thus within an area of forested terrain)." might imply that you're subject to the planar traits of wherever the tree is, too. Area: self-only, mobile duration: 1 day per casterlevel.

Portal Seepage (source: FRCS and PGtF for how to craft permanent portals, and Underdark for the seepage effect) Sufficiently old portals may transmit planar traits from one side to the other. The books treat this as an undesired but common side-effect, and don't provide any rules for hurrying it up on purpose. Area: typically 5-foot-radius per 100 years of age, stationary duration: permanent.


Voir la vidéo: Pisteen etäisyys suorasta xy-koordinaatistossa