اطلاعیه

Collapse
No announcement yet.

کمک در حل برنامه

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کمک در حل برنامه

    می شود به کد زیر نگاهی بندازید که من برای دوارن چهار ضلعی از مرکز باید چه کار کنم.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace WindowsFormsApplication1
    {
    public partial class Form1 : Form
    {
    Point[] po = new Point[4];
    int x1, y1, x2, y2;
    int x01, y01, x02, y02;
    public Form1()
    {
    InitializeComponent();

    }

    private void button1_Click_1(object sender, EventArgs e)
    {

    x01 = Convert.ToInt32(textBox1.Text );
    y01 = Convert.ToInt32(textBox2 .Text );
    x02 = Convert.ToInt32(textBox3.Text);
    y02 = Convert.ToInt32(textBox4.Text);

    Graphics g = pictureBox1.CreateGraphics();
    Pen n_pen = new Pen(Color.Blue,2);
    x1 = 125 + Convert.ToInt32(textBox1.Text);
    y1 = 125 - Convert.ToInt32(textBox2.Text);
    x2 = 125 + Convert.ToInt32(textBox3.Text);
    y2 = 125 - Convert.ToInt32(textBox4.Text);

    po[0].X = x1; po[0].Y = y1;
    po[1].X = x2; po[1].Y = y1;
    po[2].X = x1; po[2].Y = y2;
    po[3].X = x2; po[3].Y = y2;
    g.DrawLine(n_pen, po[0], po[1]);
    g.DrawLine(n_pen, po[0], po[2]);
    g.DrawLine(n_pen, po[1], po[3]);
    g.DrawLine(n_pen, po[2], po[3]);
    }

    private void button2_Click(object sender, EventArgs e)
    {
    double re=Convert.ToDouble(textBox5.Text ) *Math.PI/180;
    Graphics g = pictureBox1.CreateGraphics();
    Pen n_pen = new Pen(Color.Brown, 1);
    int x11, y11, x22, y22;
    x11 =Convert.ToInt32((x01 * (float)Math.Cos(re) - y01 * (float)Math.Sin(re)));
    y11 =Convert.ToInt32((x01 * (float)Math.Sin(re) + y01 * (float)Math.Cos(re)));
    x22 = Convert.ToInt32((x02 * (float)Math.Cos(re) - y02 * (float)Math.Sin(re)));
    y22 = Convert.ToInt32((x02 * (float)Math.Sin(re) + y02 * (float)Math.Cos(re)));

    x1 = 125 + x11;
    y1 = 125 - y11;
    x2 = 125 + x22;
    y2 = 125 - y22;

    po[0].X = x1; po[0].Y = y1;
    po[1].X = x2; po[1].Y = y1;
    po[2].X = x1; po[2].Y = y2;
    po[3].X = x2; po[3].Y = y2;

    g.DrawLine(n_pen, po[0], po[1]);
    g.DrawLine(n_pen, po[0], po[2]);
    g.DrawLine(n_pen, po[1], po[3]);
    g.DrawLine(n_pen, po[2], po[3]);


    }
    }
    }




    #2
    پاسخ : کمک در حل برنامه

    مختصات چهار راس چهار ضلعی در اخر برنامه بهم وصل شده و چهار ضلعی بوجود میاد.حالا اگه قبل از اون ، هر یک از چهار نقطه در ماتریس دوران ضرب و چهار راس حاصل بهم وصل شوند حاصل چهار ضلعی دوران یافته حواهد بود.

    دیدگاه


      #3
      پاسخ : کمک در حل برنامه

      برای دوران
      1) اول باید شکل رو از مرکزش گرفت و به نقطه 0و0 برد(برای اینکار کافیه مختصات مرکز دوران رو از تک تک نقطه ها کم کنیم)
      2) سپس دوران داد
      3) و در آخر به همون مقدار که جابجا کرده بودیم همه نقطه های شکل رو برگردونیم

      مرکز دوران cx,cy
      مختصات نقطه فرضی x1,y1
      مختصات نقطه موقتی xt,yt

      1) انتقال
      xt=x1-cx
      yt=y1-cy

      2) دوران
      x1=xt*Cos(radian) - yt*Sin(radian)
      y1=yt*Cos(radian) + xt*Sin(radian)

      3) انتقال (برگرداندن)
      x1=x1+cx
      y1=y1+cy

      برای هر نقطه، این 3 مرحله باید انجام بشه ..


      کد:
      
      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Data;
      using System.Drawing;
      using System.Linq;
      using System.Text;
      using System.Windows.Forms;
      
      namespace WindowsFormsApplication1
      {
        public partial class Form1 : Form
        {
          Point[] po = new Point[5];
          int x1, y1, x2, y2;
          int x01, y01, x02, y02;
          public Form1()
          {
            InitializeComponent();
          }
      
          private void button1_Click(object sender, EventArgs e)
          {
      
            x01 = Convert.ToInt32(textBox1.Text);
            y01 = Convert.ToInt32(textBox2.Text);
            x02 = Convert.ToInt32(textBox3.Text);
            y02 = Convert.ToInt32(textBox4.Text);
      
            Graphics g = pictureBox1.CreateGraphics();
            Pen n_pen = new Pen(Color.Blue, 2);
            x1 = Convert.ToInt32(textBox1.Text);
            y1 = Convert.ToInt32(textBox2.Text);
            x2 = Convert.ToInt32(textBox3.Text);
            y2 = Convert.ToInt32(textBox4.Text);
      
            po[0].X = x1; po[0].Y = y1;
            po[1].X = x2; po[1].Y = y1;
            po[2].X = x2; po[2].Y = y2;
            po[3].X = x1; po[3].Y = y2;
            po[4].X = po[0].X; po[4].Y = po[0].Y;
      
            g.DrawLines(n_pen, po);
      
          }
      
          private void button2_Click(object sender, EventArgs e)
          {
            double re = Convert.ToDouble(textBox5.Text) * Math.PI / 180;
            Graphics g = pictureBox1.CreateGraphics();
            Pen n_pen = new Pen(Color.Brown, 1);
            int x11, y11, x22, y22;
            int cx, cy, i,x,y;
            cx = (x1 + x2) / 2;
            cy = (y1 + y2) / 2;
      
      
            //----------------------------------------------
      
      
      
            for (i = 0; i < 5; i++)
            {
            //انتقال
              po[i].X -= cx;
              po[i].Y -= cy;
      
      
      
            // دوران
              x = Convert.ToInt32(po[i].X * (float)Math.Cos(re) - po[i].Y * (float)Math.Sin(re));
              y = Convert.ToInt32(po[i].Y * (float)Math.Cos(re) + po[i].X * (float)Math.Sin(re));
      
      
      
            // انتقال معکوس
              po[i].X = x+cx;
              po[i].Y =y+cy;
      
      
      
            }
      
            //g.Clear(pictureBox1.BackColor);
            g.DrawLines(n_pen, po);
      
          }
      
      
        }
      }
      زندگی پر ز وجود است ولی ..
      ما چه را می خواهیم چه را می جوییم که لب چشمه ی امید اینچنین نا امیدانه به سرابی تلخ مینگریم...

      دیدگاه


        #4
        پاسخ : کمک در حل برنامه

        لطفا عنوان تاپیک رو اصلاح بفرمایید

        دیدگاه

        لطفا صبر کنید...
        X