>>186 Perl5、P0-P2-P4-P1-P3が凸五角形であるか、で判定
@t = ([[0,0], [1,2], [2,0], [0,1], [2,1]],
[[0,0], [1,2], [2,0], [0,2], [2,2]],
[[0,0], [0,1], [1,2], [2,1], [2,0]],
[[0,0], [5,5], [0,5], [1,0], [1,6]],
[[0,1], [0,0], [1,0],[-1,-2],[-2,-1]]
);
@s = qw{0 2 4 1 3 0 2};
use PDL;
use PDL::Math;
use PDL::Constants qw(PI);
use feature 'signatures';
sub f($v1, $v2) {
my $sp = sum $v1 * $v2;
$v2 = -$v2 if $sp < 0.0;
my $ang = asin det pdl $v1 , $v2;
$ang = $ang >= 0.0 ? -PI + $ang : PI + $ang if $sp < 0.0;
$ang
}
for $ps (@t) {
@vs = map{pdl $ps->[$s[$_]]} 0..6;
@es = map{norm($vs[$_+1] - $vs[$_])} 0..5;
$angs = pdl map{f $es[$_], $es[$_+1]} 0..4;
$ans = 'true';
$ans = 'false' if (grep{abs $angs->at($_) < 0.0001} 0..4)
or $angs->min * $angs->max < 0.0;
$ttl = sum $angs;
$ans = 'false' if abs $ttl < 6.28 or abs $ttl > 6.29;
print "$ttl = Σ$angs: $ans\n";
}
探検
プログラミングのお題スレ Part17
■ このスレッドは過去ログ倉庫に格納されています
245デフォルトの名無しさん
2020/04/19(日) 15:33:55.52ID:xgV79Bs/■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【テレビ】25年ぶり復活「炎のチャレンジャー」南原清隆&菊池風磨がMC 懐かし「電流イライラ棒」も [湛然★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- ( ・᷄ὢ・᷅ )あ?
- 安価でセブンイレブンの商品買いに行く
- ブタをぶったたく
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 高市総理、睡眠時間30分😢
- 【速報】高市早苗、起床 [779938112]
