KochSnow曲线

这里实现了Koch曲线,而且提到我们只需要对一个等边三角形的各条边按照Koch曲线的算法进行绘图就能得到KochSnow曲线,将其实现到之前提到的绘图框架中,考虑到KochSnow的实现主要依赖Koch曲线的绘图算法,所以讲KochSnow作为Koch类的子类实现,在这个子类中实现一个新的构造函数,同时重写父类的draw方法,在这个方法中调用三次父类的drawShape方法对三条边进行绘图即可。

package com.elvalad;

import java.awt.*;

/**
 * Created by elvalad on 2014/12/29.
 */
public class KochSnow extends Koch {
    private double x1;
    private double y1;
    private double x2;
    private double y2;
    private double x3;
    private double y3;
    private Color color = new Color(43, 77, 219);

    /**
     * KochSnow曲线构造函数
     */
    public KochSnow() {
        super();
    }

    /**
     * KochSnow曲线构造函数
     * @param x1    KochSnow曲线初始三角形顶点1横坐标
     * @param y1    KochSnow曲线初始三角形顶点1纵坐标
     * @param x2    KochSnow曲线初始三角形顶点2横坐标
     * @param y2    KochSnow曲线初始三角形顶点2纵坐标
     * @param x3    KochSnow曲线初始三角形顶点3横坐标
     * @param y3    KochSnow曲线初始三角形顶点3纵坐标
     * @param color KochSnow曲线的颜色
     */
    public KochSnow(double x1, double y1, double x2, double y2, double x3, double y3, Color color) {
        this.x1 = x1;
        this.y1 = y1;
        this.x2 = x2;
        this.y2 = y2;
        this.x3 = x3;
        this.y3 = y3;
        this.color = color;
    }

    /**
     *
     * @param g
     */
    @Override
    public void draw(Graphics g) {
        g.setColor(this.color);
        super.drawShape(g, this.x1, this.y1, this.x2, this.y2);
        super.drawShape(g, this.x2, this.y2, this.x3, this.y3);
        super.drawShape(g, this.x3, this.y3, this.x1, this.y1);
    }
}

时间: 2024-10-13 08:42:42

KochSnow曲线的相关文章

UIBezierPath 贝塞尔曲线

1. UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(30, 30, 100, 100) cornerRadius:0]; CAShapeLayer * layer = [CAShapeLayer layer];    layer.path = path.CGPath;    layer.fillColor = [[UIColor blackColor]CGColor]; layer.strokeC

origin 8.5 曲线拟合,延长曲线范围

1. 输入数据并选择Y轴数据 2 非线性拟合 Analysis-Fitting-Nonlinear Curve Fit-Open Dialog 3.选择拟合曲线类型 在origin7.5中选择曲线类型和表达式比较直观,8.5好像反而不太直观了. 固定某个参数可在Parameters中设置. 点击Fit开始拟合 双击FitNL中的小图打开图像 4.延长拟合曲线范围 点击左上角小锁头图标,Change Parameters 切换回 选择Fitted Curves-Range改为Custom-去掉Au

iOS:使用贝塞尔曲线绘制图表(折线图、柱状图、饼状图)

1.介绍: UIBezierPath :画贝塞尔曲线的path类 UIBezierPath定义 : 贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度. 曲线的定义有四个点:起始点.终止点(也称锚点)以及两个相互分离的中间点. 滑动两个中间点,贝塞尔曲线的形状会发生变化. UIBezierPath :对象是CGPathRef数据类型的封装,可以方便的让我们画出 矩形 . 椭圆 或者 直线和曲线的组合形状 初始化方法: + (instancetype)bezierPath; /

【开源项目解析】QQ“一键下班”功能实现解析——学习Path及贝塞尔曲线的基本使用

早在很久很久以前,QQ就实现了"一键下班"功能.何为"一键下班"?当你QQ有信息时,下部会有信息数量提示红点,点击拖动之后,就会出现"一键下班"效果.本文将结合github上关于此功能的一个简单实现,介绍这个功能的基本实现思路. 项目地址 https://github.com/chenupt/BezierDemo 最终实现效果 实现原理解析 我个人感觉,这个效果实现的很漂亮啊!那么咱们就来看看实现原理是什么~ 注:下面内容请参照项目源码观看. 其

用OpenGL进行曲线、曲面的绘制

实验目的 1)理解Bezier曲线.曲面绘制的基本原理:理解OpenGL中一维.二维插值求值器的用法. 2)掌握OpenGL中曲线.曲面绘图的方法,对比不同参数下的绘图效果差异: 代码1:用四个控制点绘制一条三次Bezier曲线 #include "stdafx.h" #include <stdlib.h> #include <time.h> #include <GL/glut.h> //4个控制点的3D坐标--z坐标全为0 GLfloat ctrl

HIT1946 希尔伯特分形曲线(dfs)

补第二次期末考的题--发现代码细节还需要加强啊--这样一道题一直犯小错误. 题目链接: http://acm.hit.edu.cn/hoj/problem/view?id=1946 题目描述: 希尔伯特分形曲线 Submitted : 53, Accepted : 16 数学家Hilbert曾发现一种十分奇特的曲线.一般的曲线是没有面积的,但他发现的这条曲线却能充满整个空间.Hilbert曲线是由不断的迭代过程形成的.如下图所示,最原始的曲线称为H1,由H1迭代形成H2,再由H2迭代形成H3..

贝塞尔曲线实现的购物车添加商品动画效果

效果图如下: 1.activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rly_bezier_curve_shopping_cart" android:layout_w

曲线拟合——(2)拉普拉斯/瑞利/对数正态 曲线

作者:桂. 时间:2017-03-15  21:12:18 链接:http://www.cnblogs.com/xingshansi/p/6556517.html 声明:欢迎被转载,不过记得注明出处哦~ 本文为拟合系列中的一部分,主要介绍拉普拉斯曲线 .瑞利曲线.对数正态曲线的拟合,并给出理论推导. 一.理论分析 A-拉普拉斯(Laplace) 对于拉普拉斯分布: $f(x) = \frac{1}{{2b}}{e^{ - \frac{{\left| {x - \mu } \right|}}{b}

缓和曲线10麦克康奈尔

第1章 缓和曲线之麦克康奈尔曲线