精华内容
下载资源
问答
  • 二维坐标系下的向量旋转:  在2-D的迪卡尔坐标系中,一个位置向量的旋转公式可以由三角函数的几何意义推出。比如上图所示是位置向量R逆时针旋转角度B前后的情况。 在左图中,我们有关系: x0 = |R| * cosA...

    二维坐标系下的向量旋转:

                     (a)                                                     (b)

    在二维坐标系中,向量的旋转公式可以由三角函数的几何意义推出。

    比如上图所示是位置向量R逆时针旋转角度B前后的情况。

    在(a)图中,假设向量的模长为R, 则可以推导出如下关系:

            x0 = R  * cosA

            y0 = R  * sinA

    变换之后:

      cosA = x0  /  R

      sinA = y0  /  R

    在(b)图中, 同理可以可证:

      x1 = R * cos( A + B )

      y1 = R * sin( A + B )

      其中向量(x1, y1)为向量(x0, y0)逆时针旋转角度B后得到的点。

    然后根据三角函数的表达式, 将cos(A+B)和sin(A+B)分解,得到

      x1 = R  * ( cosAcosB - sinAsinB )

      y1 = R * ( sinAcosB + cosAsinB )

      现在把

      cosA = x0  /  R

      sinA = y0 /  R

      代入上面的式子,得到

      x1 = R * (x0 * cosB  /  R - y0 * sinB  /  R)

      y1 = R * (y0  * cosB  /  R + x0 * sinB  /  R)

      整理:

      x1 = x0 * cosB - y0 * sinB

      y1 = x0 * sinB + y0 * cosB

      这样我们就得到了向量围绕坐标原点的逆时针旋转公式。


    同理可知:

    顺时针旋转公式如下:

      x1 = x0 * cos(-B) - y0 * sin(-B)

      y1 = x0 * sin(-B) + y0 * cos(-B)

      整理:

      x1 = x0 * cosB + y0 * sinB

      y1 = -x0 * sinB + y0 * cosB


     

    展开全文
  • score """ 导入数据 """ df = pd.read_csv('C:\\Users\\asus\\Desktop\\数据\\zhiyintu.csv') X2=df.iloc[:,4:6] #比值系数 X3=df.iloc[:,8:11] #单位向量 #X4=df.iloc[:,6:8] #比值系数 X5 = np.array(X2) y1=df['...
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from  matplotlib.colors import ListedColormap
    from sklearn.preprocessing import StandardScaler
    from sklearn.datasets import make_moons,make_circles,make_classification
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.svm import SVC
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.ensemble import RandomForestClassifier,AdaBoostClassifier
    from sklearn.ensemble import GradientBoostingClassifier
    from sklearn.naive_bayes import GaussianNB
    from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
    from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis as QDA
    from sklearn import svm
    import matplotlib as mpl
    from sklearn import tree
    from sklearn import neighbors
    from sklearn.metrics import confusion_matrix
    from sklearn.ensemble import BaggingClassifier
    from sklearn.preprocessing import label_binarize
    from sklearn.multiclass import OneVsRestClassifier
    from sklearn.model_selection import train_test_split,cross_val_score
    from sklearn.metrics import accuracy_score,roc_curve,auc
    from sklearn.ensemble import VotingClassifier
    from sklearn.metrics import accuracy_score
    """
    导入数据
    """
    df = pd.read_csv('C:\\Users\\asus\\Desktop\\数据\\zhiyintu.csv') 
    X2=df.iloc[:,4:6]   #比值系数
    X3=df.iloc[:,8:11]  #单位向量
    #X4=df.iloc[:,6:8]   #比值系数
    X5 = np.array(X2)     
    y1=df['guzhang']         
    """
    构造训练数据
    """
    XD=[]
    yD=[]
    datasets =[]
    for i in range(len(y1)):
        XX=X3[i:i+1]
        yy=y1[i:i+1]
        XXX = np.tile(np.array(XX),(30,1)) + abs(np.tile(np.array(XX),(30,1)))*0.2*np.random.randn(1*30,3)
        yyy = np.tile(np.array(yy),(30)) 
        XD.append(XXX)
        yD.append(yyy)
        data=(XXX,yyy)
        datasets.append(data) 
    #下面代码将每一类的故障数据集合到一起
    XXXX=np.r_[XD[0],XD[1],XD[2],XD[3],XD[4],XD[5],XD[6],XD[7],XD[8],XD[9],XD[10],XD[11],XD[12]] 
    yyyy=np.r_[yD[0],yD[1],yD[2],yD[3],yD[4],yD[5],yD[6],yD[7],yD[8],yD[9],yD[10],yD[11],yD[12]]
    
    from matplotlib import pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    fig = plt.figure(figsize=(20,14))  #定义新的三维坐标轴
    ax = plt.axes(projection='3d')
    
    ax.set_zlabel('Z', fontdict={'size': 15, 'color': 'B'})
    ax.set_ylabel('Y', fontdict={'size': 15, 'color': 'B'})
    ax.set_xlabel('X', fontdict={'size': 15, 'color': 'B'})
    
    colvalue=['#FF8C00','#FF1493', '#ADFF2F','#FF69B4', '#A9A9A9','#000000','#0000FF',
             '#800080','#556B2F','#008000','#FF0000','#32CD32','#48D1CC'] 
    import matplotlib.font_manager as fm
    myfont=fm.FontProperties(fname='C:/Windows/Fonts/msyh.ttc')
    for i,k,j in zip(datasets,colvalue,range(13)):
        X,y=i
        ax.scatter(X[:,0],X[:,1],X[:,2],c=k,label="故障{}".format(j+1) )    #生成散点.利用c控制颜色序列,s控制大小
    ax.legend(prop=myfont,loc='best')
    plt.show()
    
    
    
    展开全文
  • C# WPF动点任意移动气泡画法(解决方案使用到数学勾股定理、正弦定理、向量知识)。 原文:C# WPF动点任意移动气泡画法(解决方案使用到数学勾股定理、正弦定理、向量知识)。 许久没写博客了,最近在研究...
    原文:C# WPF动点任意移动气泡画法(解决方案使用到数学勾股定理、正弦定理、向量知识)。

        许久没写博客了,最近在研究WPF下气泡的画法,研发过程还是比较艰辛的(主要是复习了高中的数学知识,MMP全忘光了),这篇博客主要是提供一个思路给大家参考,如果有大神还有更好的解决方案可以不吝您的言论尽情留言。拿个这个类型的功能项目,首先分析可以假设气泡是由:椭圆/矩形/圆(椭圆的特例)和三角形组成,OK首先分步骤介绍研发步骤:

       第一:首先我的所有的图形都是基于矩阵画出来的,坐标轴起点是(0,0),假设一个拖拉点DynamicPoint (x,y),和一个固定点FixedPoint (m,n);由两点即可确定一个矩形大小,从里面画出内接图形和一个三角形;

                  1、新建矩形  var TriagleRect = new Rect(FixedPoint, DynamicPoint);

                  2、假设矩形之内存在一个等比例大小的圆,而圆是由圆心和半径组成的直线所划过的弧确定的,半径R,圆心CenterXY (p,q);相当于已知

                  3、可以移动的点P设为:CurrentFixedPoint(s,t); 这个点是由鼠标捕获的相当于已知;

                  4、由动点CurrentFixedPoint(s,t)向圆 M(圆心为CenterXY (p,q),半径R)作两条圆的切线,求出两切点F1(f1x,f1y)、F2(f2x,f2y)坐标值?

                  如下图(做的图比较难看,做辅助之用)

                        

     

     

       到这边肯定很多人觉得很熟悉,没错这是高中的数学题,这边在研究的过程中研究了两种解决方案,下面简单的介绍下:

       方案1:

                 如图,由圆心点C向两切点做垂直线,然后根据三角函数做辅助线PQ,QC得出斜边PC长,由图中可以知道         

                  double Sine = R / AB; //求出正弦值

                ∠F1PC= Math.Round((Math.Asin(Sine) / Math.PI) * 180, 2);//把正弦值换算成角度

               利用向量和向量模进行计算二元一次方程可以得出F1,F2坐标.

               方程1:PF1向量=PC向量+CF1向量  ,这里可以得出一个关于F1的二元一次方程;

               方程2:PF1向量的模=(PC平方+CF1平方)开根号,这里可以得出一个关于F1的二元二次方程;

               由这两个方程式可以解出F1的坐标值,同理也可以得出F2的坐标值;

        方案2:

               也是如图,方案1是稍微复杂了一点,比较不利于软件当中的应用,这边着重介绍第二种算出切点的可行性方案;

                  double MB = Math.Sqrt(Math.Pow(PC, 2) - Math.Pow(R, 2));//MB为切线的长度

                  double Sine = R / AB; //求出正弦值

                ∠F1PC= Math.Round((Math.Asin(Sine) / Math.PI) * 180, 2);//把正弦值换算成角度

                接下来跟方案1不同的地方是:我要让圆心点按照角度∠F1PC进行顺逆时针进行旋转

              

     1  //把移动点作为圆心按照角度SineAngle旋转,有方向,顺逆时针
     2             Vector vector = Point.Subtract(CenterXY, CurrentFixedPoint);
     3             Matrix matrix = new Matrix();
     4             matrix.RotateAt(SineAngle, CurrentFixedPoint.X, CurrentFixedPoint.Y);
     5             //转换成单位向量1
     6             var v = matrix.Transform(vector);
     7             v.Normalize();
     8 
     9             Matrix matrix2 = new Matrix();
    10             matrix2.ScaleAt(_vector, _vector, CurrentFixedPoint.X, CurrentFixedPoint.Y);
    11             var v2 = matrix2.Transform(v);
    12             return v2;

                 经过上面旋转,然后缩放到单位1的向量假设为PF1' ,然后按比例放大到PF1的模长之后得出向量PF1,这样就可以得出F1点坐标,同理得出F2;具体转换如下:

                 

    1  //根据获得的向量值求出切点的坐标值
    2             var tmpPoint = Point.Add(P, SecondPoint);
    3             var tmpPoint2 = Point.Add(P, ThirdPoint);

     

                 这样就实现了移动动点P,F1,F2也会跟着角度进行实时变化,但是夹角不变,OK,现在动态的两个点都已经确认出来了,接下来就可以通过C#提供的方法进行连线,这样就组成了一个三角形,这个三角形是由内圆心出发延伸至动点P的图形。

                 

    1 //开始连线画点
    2             PathFigure PointPathFigure = new PathFigure();
    3             PointPathFigure.StartPoint = CurrentFixedPoint;
    4             PointPathFigure.Segments.Add(new LineSegment(new Point(tmpPoint.X, tmpPoint.Y), true));
    5             PointPathFigure.Segments.Add(new LineSegment(new Point(tmpPoint2.X, tmpPoint2.Y), true));
    6 
    7             PathGeometry myPathGeometry = new PathGeometry();
    8             myPathGeometry.Figures.Add(PointPathFigure);

     

     

       第二:两个独立图形出来之后那就是组合图形了,C#组合图形提供了一个专门的方法:Geometry.Combine(Geometry geometry1, Geometry geometry2, GeometryCombineMode mode, Transform transform),不多说不懂得可以查阅资料; 备注:ellipse 是第一个形状,四个中心点分别位于矩阵的边上;

     

       

    1             //组合图形
    2             var geometry = Geometry.Combine(myPathGeometry, ellipse, GeometryCombineMode.Union, null);
    3 
    4             this.DrawGeometry(streamGeometryContext, geometry);

     

     

     效果图如下:下面是任意移动动点P之后的效果。个人思路仅供参考。(这是原创文章,如有转载,请备注清楚)

         

     

     

     

      

     

     

     

     

    posted on 2017-11-24 10:17 NET未来之路 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/7889271.html

    展开全文
  • 许久没写博客了,最近在研究WPF下气泡的画法,研发过程还是比较艰辛的(主要是复习了高中的数学知识,MMP全忘光了),这篇博客主要是提供一个思路给大家参考,如果有大神还有更好的解决方案可以不吝您的言论尽情留言...

    许久没写博客了,最近在研究WPF下气泡的画法,研发过程还是比较艰辛的(主要是复习了高中的数学知识,MMP全忘光了),这篇博客主要是提供一个思路给大家参考,如果有大神还有更好的解决方案可以不吝您的言论尽情留言。拿个这个类型的功能项目,首先分析可以假设气泡是由:椭圆/矩形/圆(椭圆的特例)和三角形组成,OK首先分步骤介绍研发步骤:

       第一:首先我的所有的图形都是基于矩阵画出来的,坐标轴起点是(0,0),假设一个拖拉点DynamicPoint (x,y),和一个固定点FixedPoint (m,n);由两点即可确定一个矩形大小,从里面画出内接图形和一个三角形;

                  1、新建矩形  var TriagleRect = new Rect(FixedPoint, DynamicPoint);

                  2、假设矩形之内存在一个等比例大小的圆,而圆是由圆心和半径组成的直线所划过的弧确定的,半径R,圆心CenterXY (p,q);相当于已知

                  3、可以移动的点P设为:CurrentFixedPoint(s,t); 这个点是由鼠标捕获的相当于已知;

                  4、由动点CurrentFixedPoint(s,t)向圆 M(圆心为CenterXY (p,q),半径R)作两条圆的切线,求出两切点F1(f1x,f1y)、F2(f2x,f2y)坐标值?

                  如下图(做的图比较难看,做辅助之用)

                        

     

     

       到这边肯定很多人觉得很熟悉,没错这是高中的数学题,这边在研究的过程中研究了两种解决方案,下面简单的介绍下:

       方案1:

                 如图,由圆心点C向两切点做垂直线,然后根据三角函数做辅助线PQ,QC得出斜边PC长,由图中可以知道         

                  double Sine = R / AB; //求出正弦值

                ∠F1PC= Math.Round((Math.Asin(Sine) / Math.PI) * 180, 2);//把正弦值换算成角度

               利用向量和向量模进行计算二元一次方程可以得出F1,F2坐标.

               方程1:PF1向量=PC向量+CF1向量  ,这里可以得出一个关于F1的二元一次方程;

               方程2:PF1向量的模=(PC平方+CF1平方)开根号,这里可以得出一个关于F1的二元二次方程;

               由这两个方程式可以解出F1的坐标值,同理也可以得出F2的坐标值;

        方案2:

               也是如图,方案1是稍微复杂了一点,比较不利于软件当中的应用,这边着重介绍第二种算出切点的可行性方案;

                  double MB = Math.Sqrt(Math.Pow(PC, 2) - Math.Pow(R, 2));//MB为切线的长度

                  double Sine = R / AB; //求出正弦值

                ∠F1PC= Math.Round((Math.Asin(Sine) / Math.PI) * 180, 2);//把正弦值换算成角度

                接下来跟方案1不同的地方是:我要让圆心点按照角度∠F1PC进行顺逆时针进行旋转

              

    复制代码
     1  //把移动点作为圆心按照角度SineAngle旋转,有方向,顺逆时针
     2             Vector vector = Point.Subtract(CenterXY, CurrentFixedPoint);
     3             Matrix matrix = new Matrix();
     4             matrix.RotateAt(SineAngle, CurrentFixedPoint.X, CurrentFixedPoint.Y);
     5             //转换成单位向量1
     6             var v = matrix.Transform(vector);
     7             v.Normalize();
     8 
     9             Matrix matrix2 = new Matrix();
    10             matrix2.ScaleAt(_vector, _vector, CurrentFixedPoint.X, CurrentFixedPoint.Y);
    11             var v2 = matrix2.Transform(v);
    12             return v2;
    复制代码

                 经过上面旋转,然后缩放到单位1的向量假设为PF1' ,然后按比例放大到PF1的模长之后得出向量PF1,这样就可以得出F1点坐标,同理得出F2;具体转换如下:

                 

    1  //根据获得的向量值求出切点的坐标值
    2             var tmpPoint = Point.Add(P, SecondPoint);
    3             var tmpPoint2 = Point.Add(P, ThirdPoint);

     

                 这样就实现了移动动点P,F1,F2也会跟着角度进行实时变化,但是夹角不变,OK,现在动态的两个点都已经确认出来了,接下来就可以通过C#提供的方法进行连线,这样就组成了一个三角形,这个三角形是由内圆心出发延伸至动点P的图形。

                 

    复制代码
    1 //开始连线画点
    2             PathFigure PointPathFigure = new PathFigure();
    3             PointPathFigure.StartPoint = CurrentFixedPoint;
    4             PointPathFigure.Segments.Add(new LineSegment(new Point(tmpPoint.X, tmpPoint.Y), true));
    5             PointPathFigure.Segments.Add(new LineSegment(new Point(tmpPoint2.X, tmpPoint2.Y), true));
    6 
    7             PathGeometry myPathGeometry = new PathGeometry();
    8             myPathGeometry.Figures.Add(PointPathFigure);
    复制代码

     

     

       第二:两个独立图形出来之后那就是组合图形了,C#组合图形提供了一个专门的方法:Geometry.Combine(Geometry geometry1, Geometry geometry2, GeometryCombineMode mode, Transform transform),不多说不懂得可以查阅资料; 备注:ellipse 是第一个形状,四个中心点分别位于矩阵的边上;

     

       

    1             //组合图形
    2             var geometry = Geometry.Combine(myPathGeometry, ellipse, GeometryCombineMode.Union, null);
    3 
    4             this.DrawGeometry(streamGeometryContext, geometry);

     

     

     效果图如下:下面是任意移动动点P之后的效果。个人思路仅供参考。(这是原创文章,如有转载,请备注清楚)

          

    展开全文
  • 线段的画法

    2010-12-12 23:03:19
    在画线段时,应该把线段理解成向量,因为线段也是有大小,有方向。 并且建立一个线段的类,因为每条线段都是不同的对象。线段类的x,y属性就是线段的起点,再添加两个属性,记录线段的终点。下面是一个简单的例子,...
  • 什么是有穷状态向量机 2.有穷状态向量机的定义 具体的含义: 画法 例题: 二。正则文法: 右线性文法与状态图的转换: 文法转状态图:先画出所有的非终结符,然后再人为添加一个结束集合,然后再添加起始...
  • 用斜二测画法画直观图,本质上就是把三维空间中图形的每个点投影到一个二维...当年学向量的时候推导了一些变换公式(当时还不知道矩阵乘法),顺便研究了一下怎么样通过计算画直观图而不是凭感觉。乱搞了一通蒙出一...
  • 计算出点(x1,y1)和点(x3,y3)的中心作为新坐标的原点,这两点的连线作为x轴,其法向量取为y轴。
  • 所谓六角图就是利用功率表测量电流相位的一种方法,它是一种简单...因此,向量六角图在实际应用中具有相当广泛的用途。六角图的原理在一定坐标系统中,任何相量都可以用它在任何两个相交轴上的垂直投影来表示。根...
  • SVM,聚类,凸优化,数据中心化和标准化变换,聚类法,谱系图画法——数据分析与R语言 Lecture 9SVM优化目标数学模型凸优化拉格朗日乘子法KKT变换和对偶公式支持向量机神经网络聚类距离dist()函数数据中心化 与 ...
  • 在上面这个图中,如何区分正例和负例,前面我们讲过的最近邻,识别树,神经网络三种方法,他们的决策边界的画法可以是上面这样。然而支持向量机的概念与他们都不同,是通过画直线的方式,找到一条直线(图中虚线),...
  • 【ZJ选讲·画山】

    2019-09-24 01:46:51
    给出一张纸(N × M),你要在上面画山,但不能画出界(N,M<=100) Like this: 起点为...(好吧,还是叫它向量吧)(x > 0) 每种画法可以用无数次,问可以画出多少种形状不同的山。 【题解】 ...
  • R语言学习笔记(七)条形图对于向量而言:矩阵箱线图一般画法补充参数:直方图间距不同的解决办法--density饼图普通饼图3D饼图散点图普通散点图散点图矩阵折线图 条形图 barplot(height , beside = F, horiz = F) ...
  • 这个系列我想用来运用opengl红皮书的前八章节的内容,来打造一个室内小屋. ...一个是包含点,法向量,纹理贴图向量,二是矩形与圆形的父类,包含一些基本公有的处理. 1 type T2N3V3 = 2 struct 3 val mutable T...
  • rgb三色直方图的绘制

    千次阅读 2019-01-17 23:53:24
    不仅仅是RGB还有HSV图像都会有比较重要的画法:色调,饱和度,亮度 绘制三色直方图还是三种向量的直方图都会有意义: 1.参数准备: int bins=256;每一个分量都是256的 int hist_size[]={bins}; float range[]={0,256...
  • 关注公众号+收藏本文,利于复习解三角形专项练习需要电子稿请在文下面“写留言”,留下邮箱,会发给你【所有文章链接】【2019年2月份】2019.2.28||高一立体几何:斜二侧画法的基本原则2019.2.27||高一立体几何:空间...
  • 参考二维圆的画法我们可以采用柱面坐标系的方法,在z轴上用依次绘制不同半径的圆来形成一个球,在这个过程中我们要用到矩阵外积的思想,将圆的余弦值或者正弦值与半径进行外积,形成一个二维矩阵,矩阵的第二维度中...
  • 线形/非线形计画法 相关系数 吨位 一般化线形モデル ムーム理论 要约统计量 密度准拠クラスタリング 统计的因果推定 ベイズ最适化 グラフ描画 主成分分析 统计的有意差検定 支持向量机 多変量解析 ランダムフォレス...
  • 关于这类 “4D图形”的画法的一个典型例子:https://www.ilovematlab.cn/thread-265517-1-1.html 另外,我在 23 楼提供了一个slice 函数应用的生动例子:slice 3D 动画图形。感兴趣的朋友可以看看 %%%%%%%%%%%...
  • 19.1.4 保存和获取向量 19.1.5 配置文件的数据类型 19.2 国际化 19.3 小结 第3部分 参考与机制 第20章 配置与编译 20.1 安装GNOME源码 20.2 建立开发目录 20.3 宏 20.4 configure.in文件 ...
  • GNOME GTK+ 编程宝典.pdf

    千次下载 热门讨论 2012-11-19 15:28:08
    19.1.4 保存和获取向量 19.1.5 配置文件的数据类型 19.2 国际化 19.3 小结 第3部分 参考与机制 第20章 配置与编译 20.1 安装gnome源码 20.2 建立开发目录 20.3 宏 20.4 configure.in文件 20.5 文本文件 ...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

向量画法