Quiero crear una curva vectorial que sea simétrica en la parte superior e inferior. Por ejemplo, en este ícono de béisbol ( ¿Cómo dibujar una pelota de béisbol en Pixelmator? ), si trato de escribir el vector como sugiere la respuesta aceptada, termino escribiendo la curva del vector a mano, lo que significa que la curva nunca puede ser simétrica entre la parte superior y la inferior.
Entonces, quiero crear la curva vectorial mediante programación, como especificar el punto inicial y final del vector y luego especificar el punto medio del vector y también especificar el grado de la curva, para crear una curva ordenada. No me gusta crear la curva a mano, ya que no importaba lo que hiciera, se veía bastante horrible.
Entonces, ¿es posible crear la curva ordenada especificando algunos números? No me importa qué aplicaciones tengo que usar entre Affinity Designer, Pixelmator, Sketch 3 o Illustrator CC, siempre que se pueda hacer mediante programación (la publicación vinculada está diseñada por Pixelmator, FYI).
Esta pregunta contiene dos cuestiones separadas,
Para todos los efectos, estos no están relacionados. Me parece que la única razón por la que hace la primera pregunta es porque no sabe cómo colocar con precisión los elementos dentro de la GUI, pero puedo estar equivocado. Estaré demostrando Adobe Illustrator porque eso es lo que tengo a mano.
La primera forma de posicionar las cosas con precisión es usar una cuadrícula y un complemento de cuadrícula . Este es un concepto de GUI equivalente al uso de solo x dígitos de precisión al escribir valores. Cuando reduce dónde puede colocar puntos, es más probable que pueda replicar el posicionamiento en otro lugar. El posicionamiento simétrico del mango conduce a resultados simétricos.
Imagen 1 : Ajustar a la cuadrícula hace que el posicionamiento sea predecible.
Otra forma sería dibujar exactamente la mitad de su forma y usar la herramienta de espejo para producir la mitad simétrica. Otra forma más de hacer esto es usar una pequeña curva como transportador y luego ajustar a sus puntos. Como puede ver, hay muchas opciones para hacer esto sin molestarse en ir a la capa de script.
Adobe proporciona una implementación de javaScript independiente de la plataforma llamada ExtendScript. Una secuencia de comandos para imitar lo que se hizo a mano se vería de la siguiente manera:
#target illustrator
var doc = app.activeDocument;
var pathItem = doc.pathItems.add();
pts = [[0,0], [5,0], [5,5], [0,5]]
// match units of drawn document
// convert points to 2 * mm
for(var i=0; i< pts.length; i++) {
for(var j=0; j< pts[i].length; j++) {
pts[i][j] *= 2 * 2.83464567;
}
}
var point1 = pathItem.pathPoints.add();
point1.anchor = pts[0];
point1.leftDirection = point1.anchor;
point1.rightDirection = pts[1];
var point2 = pathItem.pathPoints.add();
point2.anchor = pts[3];
point2.leftDirection = pts[2];
point2.rightDirection = point2.anchor;
pathItem.stroke = true;
pathItem.fill = false;
Simplemente pegue esto en el kit de herramientas extendscript para probarlo o colóquelo en un .jsx
archivo
A veces desea utilizar un programa arbitrario para generar dibujos vectoriales. Las opciones sanas para los formatos de salida que pueden hacer esto son:
De estos formatos, EPS y DXF son los menos convolucionados. SVG también es una buena opción, pero un poco demasiado detallado, y sigue siendo tan críptico como las capas de dibujo de PDF. También es posible generar PDF, pero a menos que tenga una API de dibujo, es un trabajo adicional (como QT o Cairo, pero de ninguna manera es difícil, solo un poco complicado). Uso EPS porque a veces necesito escribir EPS a mano, así que me resulta familiar.
Dibujar la forma anterior en un archivo EPS se vería de la siguiente manera:
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 40 40
%%Title: Graph Drawing
%%Creator: Janne Ojala
%%CreationDate: 2013-03-23
%%EndComments
% optional stuff to get
% same scale as my settings
/mm {2.83464567 mul} def
2 mm dup scale % 1 unit = 2 mm
1 2 mm div setlinewidth
1 1 translate % offset
% end optional
newpath
0 0 moveto
5 0 5 5 0 5 curveto
stroke
%%EOF
Donde los primeros tramos de primera línea son obligatorios al igual que los últimos %%EOF
. La carne del dibujo se hace con moveto y curve to donde los pares de números son los 4 puntos de control. Simplemente coloque esto en un archivo de texto con una .eps
extensión y utilícelo normalmente.
Al comparar soluciones, puede ver que el enfoque de javaScript es bastante engorroso en comparación con las alternativas.
Imagen 2: Comparación entre la curva dibujada a mano (en rojo), javaScript (en verde) y EPS (negra)
Sí, puede hacer una curva programáticamente. Sin embargo, la precisión no requiere esto. Esta publicación contiene 2 enfoques para el acceso programable y una discusión sobre cómo hacer lo mismo en la GUI.
Si entiendo su pregunta correctamente, Arc Correction by SH funcionará para usted. No lo he probado yo mismo, pero parece que haría el trabajo.
Blaszard
joojaa
Blaszard