Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建一个";“邋遢”;UML图的纸张效果?_Uml - Fatal编程技术网

创建一个";“邋遢”;UML图的纸张效果?

创建一个";“邋遢”;UML图的纸张效果?,uml,Uml,我喜欢UML图的粗糙纸效果,有没有一种算法最好不是用Ruby而是用PHP、java或C#实现的,我想看看用Rebol做同样的事情是否容易: 效果结合在一起 对角线渐变填充 阴影 线条不是笔直的,而是有一些明显随机的小偏差,给人一种“邋遢”的感觉 您可以使用散列输入对随机数生成器进行种子设定,以便每次都获得相同的图像 这似乎适用于清理管线: public class ScruffyLines { static final double WOBBLE_SIZE = 0.5; st

我喜欢UML图的粗糙纸效果,有没有一种算法最好不是用Ruby而是用PHP、java或C#实现的,我想看看用Rebol做同样的事情是否容易:

效果结合在一起

  • 对角线渐变填充
  • 阴影
  • 线条不是笔直的,而是有一些明显随机的小偏差,给人一种“邋遢”的感觉
您可以使用散列输入对随机数生成器进行种子设定,以便每次都获得相同的图像

这似乎适用于清理管线:

public class ScruffyLines {
    static final double WOBBLE_SIZE = 0.5;
    static final double WOBBLE_INTERVAL = 16.0;

    Random random;

    ScruffyLines ( long seed ) {
        random = new Random(seed);
    }


    public Point2D.Double[] scruffUpPolygon ( Point2D.Double[] polygon ) {
        ArrayList<Point2D.Double>   points = new ArrayList<Point2D.Double>();
        Point2D.Double              prev   = polygon[0];

        points.add ( prev ); // no wobble on first point

        for ( int index = 1; index < polygon.length; ++index ) {
            final Point2D.Double    point = polygon[index];
            final double            dist = prev.distance ( point );

            // interpolate between prev and current point if they are more
            // than a certain distance apart, adding in extra points to make 
            // longer lines wobbly
            if ( dist > WOBBLE_INTERVAL ) {
                int    stepCount = ( int ) Math.floor ( dist / WOBBLE_INTERVAL );
                double step = dist / stepCount;

                double x  = prev.x;
                double y  = prev.y;
                double dx = ( point.x - prev.x ) / stepCount;
                double dy = ( point.y - prev.y ) / stepCount;

                for ( int count = 1; count < stepCount; ++count ) {
                    x += dx;
                    y += dy;

                    points.add ( perturb ( x, y ) );
                }
            }

            points.add ( perturb ( point.x, point.y ) );

            prev = point;
        }

        return points.toArray ( new Point2D.Double[ points.size() ] );
    }   

    Point2D.Double perturb ( double x, double y ) {
        return new Point2D.Double ( 
            x + random.nextGaussian() * WOBBLE_SIZE, 
            y + random.nextGaussian() * WOBBLE_SIZE );
    }
}
公共类ScruffyLines{
静态最终双摆动_尺寸=0.5;
静态最终双摆动间隔=16.0;
随机;
灌木林(长种子){
随机=新随机(种子);
}
公共点2D.Double[]粗多边形(点2D.Double[]多边形){
ArrayList points=新的ArrayList();
Point2D.Double prev=多边形[0];
points.add(上一个);//第一个点没有抖动
对于(int index=1;index摆动间隔){
int步数=(int)数学地板(距离/摆动间隔);
双步=距离/步数;
双x=上一个x;
双y=上一个y;
双dx=(点x-上一个点x)/步数;
双dy=(点y-上一个y)/步数;
对于(int count=1;count

+1对于漂亮的站点/链接,看起来很方便:)访问了您的项目:哇,我很惊讶。您是否会在IDE中包含Rebol;)非常感谢你是个和蔼可亲的人!