This program is used to show how to generate an oval.

The moon's orbit around the sun is an oval two.

锘縰sing System;
using System.Windows.Forms;
using System.Drawing;
using System.Collections.Generic;
class Haha : Form
{
    Haha()
    {
        WindowState = FormWindowState.Maximized;
        Paint += draw;
        Timer t = new Timer();
        t.Tick += delegate
        {
            Invalidate();
        };
        init();
        t.Interval = 200;
        t.Start();
        Activated += delegate
        {
            t.Start();
        };
        SizeChanged += delegate
        {
            if (WindowState == FormWindowState.Minimized) t.Stop();
        };
    }
    const int period=100;
    int now=0;
    Bitmap[] bit=new Bitmap[period];
    void init()
    {
        double the=Math.PI*2/period;
        LinkedList<Point> mark = new LinkedList<Point>();
        var p = new Pen(new SolidBrush(Color.Tomato), 1);
        for (int i = 0; i < bit.Length; i++)
        {
            bit[i] = new Bitmap(200,200);
            var g = Graphics.FromImage(bit[i]);
            int R = Math.Min(bit[i].Width, bit[i].Height) >> 1;
            int x = bit[i].Width >> 1;
            int y = bit[i].Height >> 1;
            g.DrawEllipse(p, x - R, y - R, R << 1, R << 1);
            int RR = R >> 1;
            double xx = x + RR * Math.Cos(the * i);
            double yy = y + RR * Math.Sin(the * i);
            g.DrawEllipse(p, (float)(xx - RR), (float)(yy - RR), RR << 1, RR << 1);
            double r = RR * 0.5;
            double xxx = xx + r * Math.Cos(-the * i);
            double yyy = yy + r * Math.Sin(-the * i);
            mark.AddLast(new Point((int)xxx, (int)yyy));
            g.DrawEllipse(p, (float)(xxx - r), (float)(yyy - r), (float)r * 2, (float)r * 2);
            foreach (var point in mark)
            {
                g.FillEllipse(new SolidBrush(Color.Tomato), point.X, point.Y, 2, 2);
            }
            g.DrawLine(p, (float)xxx, (float)yyy, (float)xx, (float)yy);
            g.DrawLine(p, (float)xx, (float)yy, (float)x, (float)y);
        }
    }
    void draw(object o,PaintEventArgs e)
    {
        now = (now + 1) % period;
        int w = Math.Min(ClientSize.Width, ClientSize.Height);
        e.Graphics.DrawImage(bit[now],0,0,w,w);
    }
    static void Main()
    {
        Application.Run(new Haha());
    }
}

The oval rotates around its own corner.

 using System;
 using System.Windows.Forms;
 using System.Drawing;
 class Haha : Form
 {
     Haha()
     {
         Text = "椭圆焦点极坐标方程:顺时针旋转减去旋转角,逆时针旋转加上旋转角";
         Paint += draw;
         WindowState = FormWindowState.Maximized;
     }
     double a, b, w, h;
     double c, e, k;
     double fx(double the, double phi)
     {
          + e * Math.Cos(the - phi)) * Math.Cos(the);
     }
     double fy(double the, double phi)
     {
          + e * Math.Cos(the - phi)) * Math.Sin(the);
     }
     Point mix, miy, corner;
     double minX(double phi)
     {
         , r = Math.PI /  * ;
         )
         {
             ;
             double lm = l + d;
             double rm = r - d;
             if (fx(lm, phi) > fx(rm, phi)) l = lm;
             else r = rm;
         }
         mix.X = (int)fx(l, phi);
         miy.Y = (int)fy(l, phi);
         return fx(l, phi);
     }
     double minY(double phi)
     {
         ;
         )
         {
             ;
             double lm = l + d;
             double rm = r - d;
             if (fy(lm, phi) > fy(rm, phi)) l = lm;
             else r = rm;
         }
         miy.X = (int)fx(l, phi);
         miy.Y = (int)fy(l, phi);
         return fy(l, phi);
     }
     void draw(object o, PaintEventArgs pe)
     {
         /;
         Text = ;
         pe.Graphics.Clear(Color.Wheat);
         );
          * Math.PI / ;
         a=Math.Min(ClientSize.Width,ClientSize.Height)>>;
         b=0.618*a;
         k=b*b/a;
         c=Math.Sqrt(a*a-b*b);
         e=c/a;
         ;
         ;
         ; i<  * Math.PI; i += the)
         {
             +e*Math.Cos(i-phi))*Math.Cos(i);
              + e * Math.Cos(i-phi)) * Math.Sin(i);
             pe.Graphics.FillEllipse(,);
         }
         pe.Graphics.FillEllipse(,);
         minX(phi);
         minY(phi);
         corner.X=mix.X;
         corner.Y=miy.Y;
         mix.X += centerX;
         mix.Y += centerY;
         miy.X += centerX;
         miy.Y += centerY;
         corner.X += centerX;
         corner.Y += centerY;
         pen.Color = Color.Black;
         pe.Graphics.DrawLine(pen, mix, corner);
         pen.Color = Color.Blue;
         pe.Graphics.DrawLine(pen, miy, corner);
         pe.Graphics.FillEllipse(, );
     }
     static void Main()
     {
         Application.Run(new Haha());
     }
 }

C# Rotating Oval的更多相关文章

  1. Rotating Image Slider - 图片旋转切换特效

    非常炫的图片旋转滑动特效,相信会给你留下深刻印象.滑动图像时,我们会稍稍旋转它们并延缓各元素的滑动.滑块的不寻常的形状是由一些预先放置的元素和使用边框创建.另外支持自动播放选项,鼠标滚轮的功能. 在线 ...

  2. Java对象校验框架之Oval

      只要有接口,就会有参数的校验,目前开源的校验框架已经非常多了,不过不得不提一下Oval.OVal 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件.Annotation.POJO ...

  3. 【POJ 3335】 Rotating Scoreboard (多边形的核- - 半平面交应用)

    Rotating Scoreboard Description This year, ACM/ICPC World finals will be held in a hall in form of a ...

  4. Python Tkinter canvas oval原理

    Ovals, mathematically, are ellipses, including circles as a special case. The ellipse is fit into a ...

  5. poj 3335 Rotating Scoreboard - 半平面交

    /* poj 3335 Rotating Scoreboard - 半平面交 点是顺时针给出的 */ #include <stdio.h> #include<math.h> c ...

  6. Android - shape圆形画法(oval)

    shape圆形画法(oval) 本文地址: http://blog.csdn.net/caroline_wendy 1. 创建一个目录drawable, 用于存放xml类型的图片资源; 2. 在dra ...

  7. poj 3335 Rotating Scoreboard(半平面交)

    Rotating Scoreboard Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6420   Accepted: 25 ...

  8. 山东省ACM多校联盟省赛个人训练第六场 poj 3335 D Rotating Scoreboard

    山东省ACM多校联盟省赛个人训练第六场 D Rotating Scoreboard https://vjudge.net/problem/POJ-3335 时间限制:C/C++ 1秒,其他语言2秒 空 ...

  9. 通过groovy表达式拓展oval——实现根据同一实体中的其他属性值对某个字段进行校验

    在java的参数校验中,开源验证框架OVAL基本能够满足所有需求,如下面通过简单的添加注解,就可实现对参数的非空和长度校验. @NotNull(message="计息周期月数不能为空&quo ...

随机推荐

  1. 搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)

    一.环境准备: 1.JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.Jmeter:http://jme ...

  2. android 新建项目中去掉标题栏

    1.新建new android application project theme选none 并打钩创建一个Blank Activity 运行如下图所示: 2.若想把标题栏去掉,更改Manifestr ...

  3. JS MD5

    1 /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as ...

  4. PhpSms 稳定可靠的php短信发送库

    可能是目前最聪明.优雅的PHP短信发送库了.从此不再为各种原因造成的个别短信发送失败而烦忧! phpsms的任务均衡调度功能由toplan/task-balancer提供. GitHub地址:http ...

  5. libsvm Minist Hog 手写体识别

    统计手写数字集的HOG特征 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ 这篇文章是模式识别的小作业,利用sv ...

  6. u3d_shader_surface_shader_5

    CubeMap 的实现 参考: http://blog.csdn.net/candycat1992/article/details/21827365     制作cubeMap三维纹理,surface ...

  7. [No000016]为什么假期计划总是做不到?

  8. java 27 - 8 反射之 通过反射来设置某个对象的某个属性为指定值

    标题的意思是: 通过反射写一个类,类中有个方法.该方法可以设置某个类中的某个属性(构造方法,成员变量,成员方法)为特定的值 代码: // 该方法的参数列表是一个类的 类名.成员变量.给变量的赋值 pu ...

  9. 我的WafBypass之道

    0x00 前言  去年到现在就一直有人希望我出一篇关于waf绕过的文章,我觉得这种老生常谈的话题也没什么可写的.很多人一遇到waf就发懵,不知如何是好,能搜到的各种姿势也是然并卵.但是积累姿势的过程也 ...

  10. MMDrawerController的使用

    1.http://www.jianshu.com/p/9e55cbf7d5ab  MMDrawerController的使用