[C#] AY.WPF-圖形編程-高中生爲起點-研究報告1

=========================www.ayjs.net獨家擁有,未經許可,不準轉載,違者追究法律責任express

簡單的引入:點的平移與轉換canvas

System.Window.Point類的 Offset方法動畫

例如起始點10,30,offset(125,150)就變成135,180了this

DEMO1:界面上個放個按鈕和一個canvasspa

<Window x:Class="WpfApplication3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication3"
        mc:Ignorable="d"
        Title="AY繪圖基礎" Height="420" Width="600" Loaded="Window_Loaded" WindowStartupLocation="CenterScreen">
    <Grid>
        <Button x:Name="btnmove" Content="平移" Click="btnmove_Click" Width="80" Height="30" VerticalAlignment="Top" HorizontalAlignment="Left"/>
        <Canvas x:Name="canvas" Width="400" Height="300" Background="FloralWhite">
            
        </Canvas>
    </Grid>
</Window>

後臺在窗體初始化的時候,建立一個該兩點的連線.net

   Point p_start = new Point(150, 150);
        Point p_end = new Point(10, 30);
        Line l = new Line();
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
        
            l.Stroke = Brushes.Black;
            l.StrokeThickness = 2;
            l.X1 = p_start.X;
            l.X2 = p_end.X;
            l.Y1 = p_start.Y;
            l.Y2 = p_end.Y;
            canvas.Children.Add(l);
        }

咱們經過動畫的方式遷移這個點3d

  Storyboard sb = new Storyboard();
        private void btnmove_Click(object sender, RoutedEventArgs e)
        {
  p_end = new Point(10, 30);//重置 p_end.Offset(
125, 150);//=>(135,180) var daX = new DoubleAnimation(p_end.X, new Duration(TimeSpan.FromMilliseconds(1000))); var daY = new DoubleAnimation(p_end.Y, new Duration(TimeSpan.FromMilliseconds(1000))); sb.Children.Add(daX); sb.Children.Add(daY); Storyboard.SetTarget(daX, l); Storyboard.SetTarget(daY, l); Storyboard.SetTargetProperty(daX, new PropertyPath(Line.X2Property)); Storyboard.SetTargetProperty(daY, new PropertyPath(Line.Y2Property)); sb.Begin(this); }

效果:code

咱們試試PointAnimationUsingKeyFrames,固然這裏line沒有point屬性,因此不行,咱們只能分開x2,y2同時動畫了,不能point動畫orm

對了,可能你聽過  Cartesian coordinate system 笛卡爾座標系xml

 

   

OpenGL中規則多是這樣的,並且還有其餘座標系,題外話不講了

OpenGL使用右手座標
從左到右,x遞增
從下到上,y遞增
從遠到近,z遞增

固然這裏我還要介紹一個 Polar coordinate system 極座標系

這個知識,通常高中學理科的都學過,沒記錯應該是 選修4-4 座標系與參數方程

   

這個概念在作扇形圖很重要,定義:

在平面內取一個定點O,叫作極點,自極點O引一條射線叫Ox,叫作極軸,再選一個單位長度,一個角度(一般取弧度)及其正方向(一般逆時針方向),這樣就創建了一個極座標系

設M是平面內任意一點,極點O與點M的距離 |OM|叫作點M的極徑,叫作ρ;以極軸Ox爲始邊,射線OM爲終邊的叫xOM叫作點M的極角,叫作θ,有序數對(ρ,θ)叫作點M的極座標

這裏的r至關於極徑ρ,因此這裏關於極座標和 直角座標系的轉換

r的另外一端的座標就等於 (x,y)=(r cosψ,r sinψ)

因此推導出另外兩個公式 p平方=x平方+y平方,tanθ=y/x

(這兩個公式過會咱們有用)

經常使用座標計算

兩點間的距離A(x1,y1) B(x2,y2) :根號下( (x2-x1)的平方+(y2-y1)的平方)

原點O距離 根號下(x的平方+y的平方)

中點座標都是 (二分之(x1+x2),二分之(y1+y2) )

兩點間的距離A(x1,y1,z1) B(x2,y2,z2) :根號下( (x1-x2)的平方+(y1-y2)的平方+(z1-z2)的平方)

原點O距離 根號下(x的平方+y的平方+z的平方)

中點座標都是 (二分之(x1+x2),二分之(y1+y2),二分之(z1+z2))

 

======================================== AYUI www.ayjs.net AY 楊洋原創編寫,請不要轉載謝謝===============

 

弧長,弧度

在數學和物理中,弧度是角的度量單位。它是由國際單位制導出的單位,單位縮寫是rad。

定義:弧長等於半徑的弧,其所對的圓心角爲1弧度。(即兩條射線從圓心向圓周射出,造成一個夾角和夾角正對的一段弧。當這段弧長正好等於圓的半徑時,兩條射線的夾角的弧度爲1)。

初中時候:弧長=nπr/180,在這裏n就是角度數,即圓心角n所對應的弧長

 特殊弧長,也就是弧度除以180後乘以π

根據定義,一週的弧度數爲2πr/r=2π,360°角=2π弧度,所以,1弧度約爲57.3°,即57°17'44.806'',1°爲π/180弧度,近似值爲0.01745弧度,周角爲2π弧度,平角(即180°角)爲π弧度,直角爲π/2弧度。

 

 

 

方差越小,數據就越集中在平均數附近,方差越大,這組數據大部分都偏離平均數。

標準差大,說明這組數據離散程度大,越小,說明離散程度小。

======================================== AYUI       www.ayjs.net      AY         楊洋原創編寫,請不要轉載謝謝===============

相關文章
相關標籤/搜索