buf.append(major * this.ratio);
buf.append(SVGUtils.formatNumberAttribute(major * this.ratio));
	public String getSVGPath() {		// TODO test the output		StringBuffer buf = new StringBuffer();		Point start = this.getLocalStartPoint();		// translate to centerpoint		start.setX(start.getX() + this.center.getX());		start.setY(start.getY() + this.center.getY());		Point end = this.getLocalEndPoint();		// translate to centerpoint		end.setX(end.getX() + this.center.getX());		end.setY(end.getY() + this.center.getY());		// get the angle between x-axis and major-axis		double major = this.majorAxisDirection.getLength();//		double angle = MathUtils.getAngle(DXFConstants.DEFAULT_X_AXIS_VECTOR,//				this.majorAxisDirection);////		if (this.majorAxisDirection.getY() > 0) {//			angle = -1 * angle;//		}////		if (angle != 0.0) {//			start = MathUtils.rotatePointXY(start, this.center, angle);//			end = MathUtils.rotatePointXY(end, this.center, angle);//		}		double angle = this.getRotationAngle();		buf.append("M ");		buf.append(start.getX());		buf.append(' ');		buf.append(start.getY());		buf.append(" A ");		buf.append(major);		buf.append(' ');		buf.append(major * this.ratio);		buf.append(' ');		// rotation value of the ellipse		buf.append((-1.0 * Math.toDegrees(angle)));		buf.append(' ');		// the large-arc flag		if ((this.endParameter - this.startParameter) > Math.PI) {			buf.append(1);		} else {			buf.append(0);		}		buf.append(' ');		// the sweep-flag always 0		buf.append(" 1 ");		// the endpoint		buf.append(end.getX());		buf.append(' ');		buf.append(end.getY());		return buf.toString();	}