zoukankan      html  css  js  c++  java
  • 科赫曲线——递归

    由递归函数画出

    1:将给点线段(p1,p2)三等分

    2:以三等分点s、t为顶点做出正三角形(s,u,t)

    3:对线段(p1,s)、(s,u)、(u,t)、(t,p2)递归重复上述操作

    #include <iostream>
    #include <cmath>
    #include <cstdio>
    using namespace std;
    #define M_PI 3.1415926
    
    typedef struct node {
        double x, y;
    } P;
    void koch(int n, P a, P b) {
        if (n == 0) return;
        P s, t, u;
        double th = M_PI * 60.0 / 180.0;
    
        s.x = (2.0 * a.x + 1.0 * b.x) / 3.0;
        s.y = (2.0 * a.y + 1.0 * b.y) / 3.0;
        t.x = (1.0 * a.x + 2.0 * b.x) / 3.0;
        t.y = (1.0 * a.x + 2.0 * b.y) / 3.0;
        u.x = (t.x - s.x) * cos(th) - (t.y - s.y) * sin(th) + s.x;
        u.y = (t.x - s.x) * sin(th) - (t.y - s.y) * cos(th) + s.y;
    
        koch(n - 1, a, s);
        printf("%.8f %.8f
    ", s.x, s.y);
        koch(n - 1, s, u);
        printf("%.8f %.8f
    ", u.x, u.y);
        koch(n - 1, u, t);
        printf("%.8f %.8f
    ", t.x, t.y);
        koch(n - 1, t, b);
    }
    int main() {
        P a, b;
        int n;
        cin >> n;
        a.x = 0;
        a.y = 0;
        b.x = 100;
        b.y = 0;
        printf("%.8f %.8f
    ", a.x, a.y);
        koch(n, a, b);
        printf("%.8f %.8f
    ", b.x, b.y);
    
        return 0;
    }
  • 相关阅读:
    EBS值集定义
    EBS MOAC 多OU使用配置
    EBS 根据报表名称查询对应职责
    EBS 根据Form名称查询对应职责
    Oracle EBS中弹性域推荐文档
    EBS FORM 中DELETE_RECORD的用法
    Java —— 对象
    Java——语句
    Java中类的继承
    Java 中声明和语句
  • 原文地址:https://www.cnblogs.com/iwomeng/p/11308100.html
Copyright © 2011-2022 走看看