Ich habe ein Radardiagramm mit drei Achsen erstellt und möchte alle Linien im Diagramm gekrümmt statt gerade machen. Ich habe keinen zufriedenstellenden Weg gefunden, alle Pfade (dh die Kanten der Dreiecke) so zu biegen, dass sie homogen aussehen. Ich kann natürlich das Umformen-Werkzeug verwenden, aber dann sieht der Grad, in dem jede Linie gekrümmt ist, nur zufällig aus. Das Hüllkurven-Verzerrungswerkzeug sieht vielversprechend aus, aber es ändert auch die Position der Ecken (der Anker) meines Diagramms, was offensichtlich nicht akzeptabel ist. Gibt es eine Möglichkeit, dies auf einfache und reproduzierbare Weise zu erreichen? (Ich muss mehrere Grafiken erstellen, die vergleichbar sein sollten).
Beachten Sie, dass ich nicht (unbedingt) versuche, perfekte Kreise zu erstellen, wie auf dem Bild unten gezeigt. Das Ziel ist vielmehr, von geraden Linien zu (leicht) gekrümmten überzugehen.
so sieht mein Diagramm gerade aus: und so möchte ich es ungefähr sehen:
Vielen Dank
Hier ist eine ganz andere Lösung. Basierend auf Ihren Kommentaren, die Sie in der Frage bearbeiten sollten.
#target illustrator
// jooBloat.jsx
//
// Copyright (c) 2015 Janne Ojala
// License: http://opensource.org/licenses/MIT
main();
function main(){
handlePaths(activeDocument.selection);
}
function bloatPoint(path, amount) {
var pts = path.pathPoints;
for(var i = 0; i < pts.length; i++){
var pos_prev = pts[(pts.length+i-1)%pts.length].anchor;
var pos = pts[i].anchor;
var pos_next = pts[(i+1)%pts.length].anchor;
pts[i].pointType = PointType.SMOOTH;
pts[i].rightDirection = add(pos,smul(0.33,sub(pos_next, pos_prev)));
pts[i].leftDirection = add(pos,smul(0.33,sub(pos_prev,pos_next)));
}
}
function sub(a, b){
arr=Array(2);
arr[0]=a[0]-b[0];
arr[1]=a[1]-b[1];
return arr;
}
function add(a, b){
arr=Array(2);
arr[0]=a[0]+b[0];
arr[1]=a[1]+b[1];
return arr;
}
function smul(a, b){
arr=Array(2);
arr[0]=a*b[0];
arr[1]=a*b[1];
return arr;
}
function handlePaths(sel) {
for(var i = 0; i < sel.length; i++){
if(sel[i].typename == "PathItem"){
bloatPoint(sel[i]);
}
}
}
Wählen Sie eine beliebige Anzahl geschlossener Pfade aus und führen Sie das Skript aus. Ergebnisse in:
Bild 1 : Vor und nach dem Ausführen des Skripts auf Dreiecken.
Wie man ein Dreieck an 3 Punkte anpasst, wird in diesem Beitrag beschrieben
Bild 2 : Dreipunktbogen
Es stellt sich also heraus, dass Sie einige Eigenschaften von Kreisen, Linien und >Dreiecken verwenden können. Sie können immer einen Kreis bilden, der 2 Punkte trifft, indem Sie den > Mittelpunkt des Kreises auf die Mittelpunktsnormale der Verbindungslinie ziehen. Sie können >den Mittelpunkt finden, indem Sie beliebige Kreise zeichnen, die sich kreuzen. Sie werden > die Mitte überqueren, wenn Sie also die Schnittpunkte verbinden, erhalten Sie die > Mitte normal. Da nun 3 Punkte zwei davon erfüllen müssen, liegt der EINZIGE Kreismittelpunkt am Schnittpunkt der 2 Normalen.
Es gibt ein Skript von Hiryoki Sato namens circumcircle , das dies etwas schneller macht als das manuelle Zeichnen von Linien.
5Mark