Как согнуть несколько линий графика в AI CS5?

Я создал лепестковую диаграмму с тремя осями и хотел бы, чтобы все линии на графике были изогнутыми, а не прямыми. Я не нашел удовлетворительного способа согнуть все пути (то есть края треугольников) таким образом, чтобы они выглядели однородными. Я, конечно, могу использовать инструмент изменения формы, но тогда степень искривления каждой линии выглядит просто случайной. Инструмент искажения конверта выглядит многообещающе, но он также изменяет положение углов (якорей) моего графика, что явно неприемлемо. Есть ли способ добиться этого простым и воспроизводимым способом? (Мне нужно создать несколько графиков, которые должны быть сопоставимы).

обратите внимание, что я не пытаюсь (обязательно) создавать идеальные круги, как показано на изображении ниже. Цель скорее состоит в том, чтобы перейти от прямых линий к (слегка) изогнутым.

вот как мой график выглядит прямо сейчас: мой графики примерно так я хочу, чтобы он выглядел:как это должно выглядеть

Благодарность

Ответы (2)

Вот совсем другое решение. На основании ваших комментариев, которые вы должны отредактировать в вопросе.

#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]);
      }
  }
}

Выберите любое количество закрытых путей и выполните скрипт. Результат:

введите описание изображения здесь

Изображение 1 : До и после запуска скрипта на треугольниках.

спасибо, оба отличные ответы. Теперь мне нужно решить, какой из них лучше для моей цели...

Как вписать треугольник в 3 точки описано в этом посте

3_point_arc

Изображение 2 : Трехточечная дуга

Так что получается, что вы можете использовать несколько свойств кругов, линий и треугольников. Вы всегда можете сформировать круг, который достигает 2 точек, нарисовав> центр круга на средней точке нормали соединительной линии. Вы можете > найти середину, нарисовав любые круги, которые пересекаются друг с другом. Они пересекают центр, поэтому, если вы соедините пересечения, вы получите нормаль к центру. Теперь, поскольку 3 точки должны удовлетворять двум из них, ЕДИНСТВЕННЫЙ > центр кругов находится на пересечении двух нормалей.

Существует сценарий Хириоки Сато под названием «circlecircle» , который делает это немного быстрее, чем рисование линий вручную.

спасибо, простой и классный сценарий, и судя по фотографиям, которые я разместил, это правильный ответ. Хотя на самом деле я не собирался делать идеальные круги. Просто кривые линии, поэтому я оставлю вопрос открытым в надежде, что есть другое возможное решение.
@Вы можете добавить шум к кругу с помощью Эффект -> Огрубление
@ 5mark, тогда вы можете отредактировать свой вопрос.