⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 curves.java

📁 纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统
💻 JAVA
字号:
/*
 * $Id: Curves.java,v 1.1 2004/01/02 08:57:15 epr Exp $
 */
package org.jnode.driver.video.util;

/**
 * Utility class for calculating various types of curves.
 * 
 * @author Ewout Prangsma
 */
public class Curves {

	/**
	 * Calculate the line points that make up the cubic curve 
	 * described by (x0,y0)-(x3,y3)
	 * @param x0
	 * @param y0
	 * @param x1
	 * @param y1
	 * @param x2
	 * @param y2
	 * @param x3
	 * @param y3
	 * @param points The resulting points
	 */
	public static void calculateCubicCurve(double x0, double y0, double x1, double y1, double x2, double y2, double x3, double y3, double points[]) {
		
		final int length = points.length;
		final int steps = (length / 2) - 1;
		final double incr = 1.0 / steps;

		int i = 0;
		double t = 0.0;
		for (int step = 0; step < steps; step++) {
			double f0 = (1 - t) * (1 - t) * (1 - t);
			double f1 = 3 * t * (1 - t) * (1 - t);
			double f2 = 3 * t * t * (1 - t);
			double f3 = t * t * t;
			double new_x = f0 * x0 + f1 * x1 + f2 * x2 + f3 * x3;
			double new_y = f0 * y0 + f1 * y1 + f2 * y2 + f3 * y3;
			points[i++] = new_x;
			points[i++] = new_y;
			t += incr;
		}
		points[i++] = x3;
		points[i++] = y3;
	}

	/**
	 * Calculate the line points that make up the quadratic parametric curve
	 * described by (x0,y0)-(x2,y2)
	 * @param x0
	 * @param y0
	 * @param x1
	 * @param y1
	 * @param x2
	 * @param y2
	 * @param points The resulting points
	 */
	public static void calculateQuadCurve(double x0, double y0, double x1, double y1, double x2, double y2, double points[]) {
		
		final int length = points.length;
		final int steps = (length / 2) - 1;
		final double incr = 1.0 / steps;

		int i = 0;
		double t = 0.0;
		for (int step = 0; step < steps; step++) {
			double f0 = (1 - t) * (1 - t);
			double f1 = 2 * t * (1 - t);
			double f2 = t * t;
			double new_x = f0 * x0 + f1 * x1 + f2 * x2;
			double new_y = f0 * y0 + f1 * y1 + f2 * y2;
			points[i++] = new_x;
			points[i++] = new_y;
			t += incr;
		}
		points[i++] = x2;
		points[i++] = y2;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -