Графическое изображение точки на краю сферы

Если вы используете Perl 5.10, у вас есть given / when , который является оператором переключения (обратите внимание, что он может сделать больше, чем сравнение с регулярными выражениями, прочитайте связанные документы, чтобы увидеть его полный потенциал ):

#or any of the dozen other ways to tell 5.10 to use its new features
use feature qw/switch/; 

given($string) {
    when (/^abc/) { $abc     = 1; }
    when (/^def/) { $def     = 1; }
    when (/^xyz/) { $xyz     = 1; }
    default       { $nothing = 1; }
}

Если вы используете Perl 5.8 или более раннюю версию, вы должны выполнить операторы if / elsif / else:

if    ($string =~ /^abc/) { $abc     = 1; }
elsif ($string =~ /^def/) { $def     = 1; }
elsif ($string =~ /^zyz/) { $xyz     = 1; }
else                      { $nothing = 1; }

или вложенные ] операторы условия (?:) :

$string =~ /^abc/ ? $abc     = 1  :
$string =~ /^def/ ? $def     = 1  :
$string =~ /^xyz/ ? $xyz     = 1  :
                    $nothing = 1;

В Core Perl есть модуль ( Switch ), который выдает ложные операторы switch через исходные фильтры , но я понимаю, что он хрупок :

use Switch;

switch ($string) {
    case /^abc/ {
    case /^abc/ { $abc     = 1 }
    case /^def/ { $def     = 1 }
    case /^xyz/ { $xyz     = 1 } 
    else        { $nothing = 1 }
}

или альтернативный синтаксис

use Switch 'Perl6';

given ($string) {  
    when /^abc/ { $abc     = 1; }
    when /^def/ { $def     = 1; }
    when /^xyz/ { $xyz     = 1; }
    default     { $nothing = 1; }
}

24
задан James Hay 10 February 2015 в 09:49
поделиться

1 ответ

Ваше положение в 3D задается двумя углами (+ радиус, который в вашем случае постоянен)

x = r * cos(s) * sin(t)
y = r * sin(s) * sin(t)
z = r * cos(t)

здесь s - это угол вокруг оси z , а t - угол высоты , измеренный «вниз» от оси Z.

На рисунке ниже показано, что представляют собой углы, s = тета в диапазоне от 0 до 2 * PI в плоскости xy и t = phi в диапазоне от 0 до PI.

enter image description here

66
ответ дан 28 November 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: