WPF 透视相机的UpDirection(向上方向)

2021-03-07 10:27

阅读:613

标签:source   ide   click   gif   target   view   mode   multi   style   

原文:WPF 透视相机的UpDirection(向上方向)

透视相机的updirection,是具有三个参数的的属性(X,Y,Z),不过Z属性是没有作用的。

也就是说这一个立体中的平面坐标系。

那么X,Y是什么呢?

我们知道在X,Y坐标轴系内单位圆上的点,都是可以用的cosX,sinY来表示。

网上找的图

技术图片

 

 

假设,XY坐标系内画一个直径为1的圆(圆心[0,0])

确定好圆上的点连接圆心之后和Y轴之间的夹角之后再用反三角函数求出角度即可

比如说我用sin函数

当确定X,Y值后,点连接圆心,长度为1,圆心角的对边长度为X坐标,斜边长度为1(不知道为什么直接写1不好使,必须用勾股定理求一下斜边),之后再arcsin函数转角度就好了。

转换器

技术图片
 class MC : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            var v = Activator.CreateInstance(targetType,values);
            return v;
       //     throw new NotImplementedException();
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    class Deg : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            double a = double.Parse(values[0].ToString());
            double b = double.Parse(values[1].ToString());
            var d = Math.Sqrt(a * a + b * b);
            Debug.WriteLine(d);
            var c = (Math.Asin(a/d )/Math.PI) * 180.0;
            return c.ToString();
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
技术图片

 

 

技术图片
"mc"/>
        "dc"/>
    "0,0,10"   LookDirection="0,0,-10">
                    "{StaticResource mc}">
                            "s1" Path="Value"/>
                            "s2" Path="Value"/>
                            "s3" Path="Value"/>
                        "White" Direction="-1,-1,-1"/>
                "-1,0,0  0,1,0  1,0,0" TriangleIndices="0,2,1"/>
                        "Red"   />
                        "1">
            "0.1" Maximum="1" Minimum="-1" Value="{Binding ElementName=c1, Path=Text,UpdateSourceTrigger=PropertyChanged}" x:Name="s1"/>
                "0.1" Maximum="1" Minimum="-1" Value="{Binding ElementName=c2, Path=Text,UpdateSourceTrigger=PropertyChanged}" x:Name="s2"/>
                "10" Minimum="-10" Value="0" x:Name="s3"/>
              
            "1">
                "{Binding ElementName=s1,Path=Value}"/>
                "{Binding ElementName=s2,Path=Value}"/>
                "{Binding ElementName=s3,Path=Value}"/>
                "{StaticResource dc}">
                            "s1" Path="Value"/>
                            "s2" Path="Value"/>
                        "c1"/>
                "c2"/>
            
技术图片

 

值得注意的是 这个是旋转的是摄像机旋转,物体是不动的,也就是左右方向是反的。

最后上传

其他软件的对照角度和XY坐标,可以自己验证一下

技术图片

 

WPF 透视相机的UpDirection(向上方向)

标签:source   ide   click   gif   target   view   mode   multi   style   

原文地址:https://www.cnblogs.com/lonelyxmas/p/12833886.html


评论


亲,登录后才可以留言!