Here you can find the source of derivativeOfCubicBezier(Point2D p0, Point2D p1, Point2D p2, Point2D p3, double t)
Parameter | Description |
---|---|
p0 | cubic curve parameter |
p1 | cubic curve parameter |
p2 | cubic curve parameter |
p3 | cubic curve parameter |
t | specified point on the curve |
private static Point2D derivativeOfCubicBezier(Point2D p0, Point2D p1, Point2D p2, Point2D p3, double t)
//package com.java2s; /*//from ww w . ja v a2s.co m * $Id: GeomHelper.java,v 1.4 2002/04/05 05:49:14 skavish Exp $ * * =========================================================================== * * The JGenerator Software License, Version 1.0 * * Copyright (c) 2000 Dmitry Skavish (skavish@usa.net). All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by Dmitry Skavish * (skavish@usa.net, http://www.flashgap.com/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The name "The JGenerator" must not be used to endorse or promote * products derived from this software without prior written permission. * For written permission, please contact skavish@usa.net. * * 5. Products derived from this software may not be called "The JGenerator" * nor may "The JGenerator" appear in their names without prior written * permission of Dmitry Skavish. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL DMITRY SKAVISH OR THE OTHER * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * */ import java.awt.geom.Point2D; public class Main { /** * Computes derivative of cubic bezier at specified point * * @param p0 cubic curve parameter * @param p1 cubic curve parameter * @param p2 cubic curve parameter * @param p3 cubic curve parameter * @param t specified point on the curve * @return derivative of specified curve at specified point */ private static Point2D derivativeOfCubicBezier(Point2D p0, Point2D p1, Point2D p2, Point2D p3, double t) { double ax = 3 * p1.getX() - 3 * p2.getX() - p0.getX() + p3.getX(); double bx = 3 * (p0.getX() - 2 * p1.getX() + p2.getX()); double cx = 3 * (p1.getX() - p0.getX()); double ay = 3 * p1.getY() - 3 * p2.getY() - p0.getY() + p3.getY(); double by = 3 * (p0.getY() - 2 * p1.getY() + p2.getY()); double cy = 3 * (p1.getY() - p0.getY()); double x = 3 * ax * t * t + 2 * bx * t + cx; double y = 3 * ay * t * t + 2 * by * t + cy; return new Point2D.Double(x, y); } }