コード例 #1
0
 public FullSolution(double[] a, double[] b, double[] l, Solution solutionWithoutChange, double persentOfChange, Solution solutionWithChange)
 {
     A = OutputTransform.VectorTransform(a, "\t");
     B = OutputTransform.VectorTransform(b, "\t");
     L = OutputTransform.VectorTransform(l, "\t");
     SolutionWithoutChange = solutionWithoutChange;
     PersentOfChange       = OutputTransform.ValueTransform(persentOfChange);
     SolutionWithChange    = solutionWithChange;
 }
コード例 #2
0
 public Solution(double[] optimalX, double functionValue, double[] alpha, double[] alphaChanged, double[][] cs, double[] fsForX, double[][] xs, double[] fsForXs, double[] deltas, double[] ys, double[] distances, int columns)
 {
     OptimalX      = OutputTransform.MatrixTransform(optimalX, columns);
     FunctionValue = OutputTransform.ValueTransform(functionValue);
     Alpha         = OutputTransform.VectorTransform(alpha, "\t");
     AlphaChanged  = OutputTransform.VectorTransform(alphaChanged, "\t");
     Cs            = OutputTransform.ArrayMatrixTransform(cs, columns);
     FsForX        = OutputTransform.ArrayValuesTransform(fsForX);
     Xs            = OutputTransform.ArrayMatrixTransform(xs, columns);
     FsForXs       = OutputTransform.ArrayValuesTransform(fsForXs);
     Deltas        = OutputTransform.ArrayValuesTransform(deltas);
     Ys            = OutputTransform.ArrayValuesTransform(ys);
     Distances     = OutputTransform.ArrayValuesTransform(distances);
     N             = columns;
 }
コード例 #3
0
        /**
         * Returns a <code>Shape</code> whose interior defines the
         * stroked outline of a specified <code>Shape</code>.
         * @param s the <code>Shape</code> boundary be stroked
         * @return the <code>Shape</code> of the stroked outline.
         */
        public Shape createStrokedShape(Shape s)
        {
            FillAdapter  filler  = new FillAdapter();
            PathStroker  stroker = new PathStroker(filler);
            PathConsumer consumer;

            stroker.setPenDiameter(width);
            switch (_penFit)
            {
            case PenFit.Thin:
                stroker.setPenFitting(PenUnits, MinPenUnits);
                break;

            case PenFit.ThinAntiAlias:
                stroker.setPenFitting(PenUnits, MinPenUnitsAA);
                break;
            }

            float[] t4 = null;
            if (PenTransform != null && !PenTransform.isIdentity() && (PenTransform.getDeterminant() > 1e-25))
            {
                t4 = new float[] {
                    (float)PenTransform.getScaleX(), (float)PenTransform.getShearY(),
                    (float)PenTransform.getShearX(), (float)PenTransform.getScaleY()
                };
            }

            float[] t6 = null;
            if (OutputTransform != null && !OutputTransform.isIdentity())
            {
                t6 = new float[] {
                    (float)OutputTransform.getScaleX(), (float)OutputTransform.getShearY(),
                    (float)OutputTransform.getShearX(), (float)OutputTransform.getScaleY(),
                    (float)OutputTransform.getTranslateX(), (float)OutputTransform.getTranslateY()
                };
            }

            stroker.setPenT4(t4);
            stroker.setOutputT6(t6);
            stroker.setCaps(RasterizerCaps[cap]);
            stroker.setCorners(RasterizerCorners[join], miterlimit);
            if (dash != null)
            {
                PathDasher dasher = new PathDasher(stroker);
                dasher.setDash(dash, dash_phase);
                dasher.setDashT4(t4);
                consumer = dasher;
            }
            else
            {
                consumer = stroker;
            }

            PathIterator pi = s.getPathIterator(null);

            try {
                consumer.beginPath();
                bool    pathClosed = false;
                float   mx         = 0.0f;
                float   my         = 0.0f;
                float[] point      = new float[6];

                while (!pi.isDone())
                {
                    int type = pi.currentSegment(point);
                    if (pathClosed == true)
                    {
                        pathClosed = false;
                        if (type != PathIterator__Finals.SEG_MOVETO)
                        {
                            // Force current point back to last moveto point
                            consumer.beginSubpath(mx, my);
                        }
                    }
                    switch ((GraphicsPath.JPI)type)
                    {
                    case GraphicsPath.JPI.SEG_MOVETO:
                        mx = point[0];
                        my = point[1];
                        consumer.beginSubpath(point[0], point[1]);
                        break;

                    case GraphicsPath.JPI.SEG_LINETO:
                        consumer.appendLine(point[0], point[1]);
                        break;

                    case GraphicsPath.JPI.SEG_QUADTO:
                        // Quadratic curves take two points
                        consumer.appendQuadratic(point[0], point[1],
                                                 point[2], point[3]);
                        break;

                    case GraphicsPath.JPI.SEG_CUBICTO:
                        // Cubic curves take three points
                        consumer.appendCubic(point[0], point[1],
                                             point[2], point[3],
                                             point[4], point[5]);
                        break;

                    case GraphicsPath.JPI.SEG_CLOSE:
                        consumer.closedSubpath();
                        pathClosed = true;
                        break;
                    }
                    pi.next();
                }

                consumer.endPath();
            } catch (PathException e) {
                throw new InternalError("Unable to Stroke shape (" +
                                        e.Message + ")");
            }

            return(filler.getShape());
        }