申し訳ありませんが、質問をグーグルで表現できるフレーズに要約することはできません。
3Dデカルトポイント(x、y、zプロパティとその他のいくつかの機能)であるPt3クラスがあります。私は Pt3 タイプを RegionProvider クラスのプロパティ値の取得/設定として使用しています - Location と Normal のために。
Location プロパティは問題ありません。プロパティがどのように設定されているかは気にしません。
//Location set method 1 - sweet...
RegionProvider Foo = new RegionProvider();
Foo.Location.x = 10;
Foo.Location.y = 20;
Foo.Location.z = 30;
//Location set method 2 - also sweet...
RegionProvider Foo2 = new RegionProvider();
Foo2.Location = new Pt3(10, 20, 30);
ただし、Normal プロパティには異なる動作が必要です。必要に応じて、RegionProvider クラスで入力を Normal プロパティに正規化する必要があります。たとえば、呼び出し元が「通常」の値を 40,50,60 に設定した場合、RegionProvider クラスは 0.4558、0.5698、0.6838 に正規化されます (ベクトルの長さ == 1 を与えるため)。 . 発信者が次のことを行うと、すべてがうまくいきます...
//Normal set method A - sweet...
Foo.Normal = new Pt3(40, 50, 60);
...しかし、彼らがこれを行うと悲しみが続く場合:
//Normal set method B - grief...
Foo2.Normal.x = 40;
Foo2.Normal.y = 50;
Foo2.Normal.z = 60;
...各要素が設定されると、RegionProvider クラスが正規化されるためです。私がやりたいことは、呼び出し元が Normal プロパティの x、y、z を表示できないようにすることで、上記のメソッド 'A' を強制的に使用するようにします。
1 つの解決策は、プロパティ セットをまったく正規化せず、プロパティ get を正規化することですが、これは偽物のように思えます。
価値のあるものとして、ここに私のNormalプロパティ宣言があります:
/// <summary>
/// Property for the objects normal
/// </summary>
public Pt3 Normal
{
set
{
_normal = Bit555ModelCore.NormalizeVector(value);
this.NotifyPropertyChanged("Normal");
}
get
{
return _normal;
}
}
どんな助けでも事前に乾杯....