時間が無い。 こちらの続きです。
siren v0.14 線の情報を取得する - C#ATIA
曲線を扱う以上、パラメータを取得したかったのですが
こちらの説明の first last params が反応しませんでした。
class Edge · dyama/mruby-siren Wiki · GitHub
サンプルコードにパラメータの取得を行っているものがあったので、前回の物を拡張
・・・ class Siren::Edge def first() return self.param(self.sp, 0.001) end def last() return self.param(self.tp, 0.001) end def info() crv = self.curve arr = ["class : " + crv.class.name] arr << ["length : " + self.length.to_s] arr << "first_pos(first_param) : %s (%f)" % [self.sp.to_s, self.first] arr << "last_pos(last_param) : %s (%f)" % [self.tp.to_s, self.last] ・・・
残りは前回と同じ。トレランスは強制的に0.001にしました。
実行結果はこちら
パラメータは Siren::Edge クラスに実装されているようなので、
赤印の直線でも取得出来ちゃうんですね。 終点のパラメータは結果的に長さなんですね。
黄色印の長さですが、Siren::Edge クラスに実装されつつ Siren::Circle クラスにも
実装されていて、最初は何でかな? と思っていたのですが、
Siren::Edge.length は、実際の長さで
Siren::Circle.length は、定義された(要は閉じた)時の長さ
になっているようです。 (開いた円弧でareaはどうやって・・・と最初は思ってました)
.curve で取得できるものは、トリム解除された状態で始点終点パラメータで
トリムされた物が Siren::Edge クラスになっているのだろ と言う解釈してみました。