প্রোগ্রামগতভাবে বিন্দুর সারি রেডিয়েটিং তৈরি করা


17

আমি এর মতো স্পিকারের গর্তের প্যাটার্নটি তৈরি করতে চাই: এখানে চিত্র বর্ণনা লিখুন

তবে আমি কোথা থেকে শুরু করব তা নিশ্চিত নই। ইলাস্ট্রেটর বা অনুরূপ সফ্টওয়্যারগুলিতে শ্রমসাধ্য অবস্থান ছাড়াই এটি অর্জন করা যেতে পারে?


পাইথনের মতো কিছু সঠিকভাবে অবস্থিত / আকারের বিন্দাগুলি সহ একটি এসভিজি তৈরি করা, তারপরে ইলাস্ট্রেটারে এসভিজি খুলুন, .ai হিসাবে পুনরায় পরিবর্তন করুন এবং সেখান থেকে যান।
সুপারবেস্ট

তুচ্ছ কথা ঠিক আছে। কার্টেসিয়ান রূপান্তরকে একটি পোলার লিখুন, তারপরে নেস্টেড লুপস, একটি স্টেপিং রেডিয়াস এবং অন্য স্টেপিং এঙ্গেল। আপনার উদাহরণে কৌণিক পদক্ষেপটি 9 ডিগ্রি বা পিআই / 10 হয়।
পিটার উইন

উত্তর:


9

আমি আমার পদ্ধতিটি যুক্ত করব, যেহেতু এটি আমার কাছে সহজ সরল মনে হচ্ছে। মূলত, আপনি:

  1. গাণিতিকভাবে পাইথনের চেনাশোনাগুলি তৈরি করে
  2. এগুলিকে একটি সাধারণ এসভিজি ফাইল হিসাবে রেন্ডার করুন
  3. ইলাস্ট্রেটে ফাইল খুলুন

পাইথন লিপিটি এখানে (প্রয়োজনীয় svgwriteএবং math):

"""
This script has two purposes:

- Simple demonstration of using Python (specifically the svgwrite library) to create an SVG file
- Answer the question http://graphicdesign.stackexchange.com/q/56200/21332
"""

# n[x] should give the number of circles at a distance of (x+1)*d from the center
d = 30
n = [8, 16, 20, 20, 20]

r = 7  # radius of each circle

# Calculate the center points of each circle
circles = [(0, 0)]  # There is always one circle in the middle

import math
for i in range(0, len(n)):
    m = n[i]  # m is the number of circle in this "row", i is the number of the row
    for j in range(0, m):  # for each circle...
        phi = 2*math.pi*j/m  # Calculate the angle at which the circle will be

        # Convert polar coordinates to cartesian
        x = d*(i+1)*math.cos(phi)
        y = d*(i+1)*math.sin(phi)

        circles.append((x, y))

# Write circles to SVG
import svgwrite

# Determine correct size of drawing
width = max([c[0] for c in circles])*2.2
height = max([c[1] for c in circles])*2.2

dwg = svgwrite.Drawing('demo.svg', size = (width, height))  # output will be in the same folder as this script

# offsets for shifting all circles so that the SVG can be easily viewed in browser
x_offset = min([c[0] for c in circles])*1.1
y_offset = min([c[1] for c in circles])*1.1

for c in circles:
    adjusted_x = c[0] - x_offset
    adjusted_y = c[1] - y_offset

    dwg.add(svgwrite.shapes.Circle((adjusted_x, adjusted_y), r))

# Save the file
dwg.save()

# Print SVG source to console
print(dwg.tostring())

এটি এতে ডিরেক্টরিতে একটি এসভিজি ফাইল তৈরি করবে You আপনি এটি একটি ব্রাউজারে খুলতে পারেন:

এখানে চিত্র বর্ণনা লিখুন

বা চিত্রক:

এখানে চিত্র বর্ণনা লিখুন

আমার চেয়ে আপনার আরও বড় ইলাস্ট্রেটর উইন্ডো ব্যবহার করা উচিত, যদিও আমার সাথে স্বাচ্ছন্দ্যে কাজ করতে কিছুটা ছোট ছিল ...

যদি পাইথন স্ক্রিপ্টগুলি ফাইল তৈরি করতে না পারে (সম্ভবত এটি একটি অনলাইন পাইথন ইন্টারপ্রেটারে এটি চালানো হয়) তবে কেবল মন্তব্য করুন dwg.save()। শেষ লাইনটি এসভিজির সামগ্রীগুলি কনসোলে মুদ্রণ করে, আপনি এটি নোটপ্যাডে পেস্ট করতে পারেন, তারপরে সংরক্ষণ করুন my file.svg

আমি বহন করে চলেছি এবং কয়েকটি "ঝরঝরে" বৈশিষ্ট্য যুক্ত করেছি, যেমন:

  • চেনাশোনাগুলি যথাযথভাবে কেন্দ্রে রয়েছে তা নিশ্চিত করুন, যাতে আপনার ব্রাউজারে দেখার সময় নেতিবাচক সমন্বয়যুক্ত চেনাশোনাগুলি ক্লিপ না হয়।
  • এসভিজি ক্যানভাসকে পুনরায় আকার দিন।

আপনি সহজেই এগুলি ছাড়তে পারেন, যেহেতু ইলাস্ট্রেটর ক্যানভাস সীমানার বাইরে অবজেক্টগুলি গোপন করে না এবং আপনাকে ক্যানভাসকে ম্যানুয়ালি আকার দিতে দেয়:

এখানে চিত্র বর্ণনা লিখুন


16

আপনি নিজেরাই ছবিটিতে তৈরি করেছেন, হাতে আছে কি নেই তা চিত্রটি এমন কি না তা আপনি নির্দিষ্ট করে বলতে পারেন না। আপনার যদি ইতিমধ্যে এই কোডটি থাকে তবে আপনি টিপি অ্যাপ্লিকেশন ক্যানভাসকে ইপিএস হিসাবে রফতানি করতে পারবেন এবং চিত্রকটিতে এটি খুলতে পারেন। আপনাকে যা করতে হবে প্রয়োজন আহবান canvas.postscript()

আপনি যদি টি কে ব্যবহার করতে চান

পাইথন 2 এ সাধারণ নমুনা:

#!/usr/bin/python
# -*- coding: utf-8 -*-

from Tkinter import *
import math

def circle(c, x, y, r=10):
    return c.create_oval(x-r, y-r, x+r, y+r, width=0, fill="black")

def draw_circles(c, num, r):
    step = (2.0*math.pi)/float(num)
    for i in range(num):
        x = 400 + r * math.sin(i*step)
        y = 400 + r * math.cos(i*step)
        circle(c, x, y)


main_window = Tk()
main_window.title('Pattern to EPS')
canvas = Canvas(main_window,
                    width=800, height=800, 
                    bg = 'white')

circle(canvas, 400, 400)
for i in range(1, 6):
    draw_circles(canvas, i*8, i*60)

canvas.pack()

# next line generates a eps file
canvas.postscript(file = "pattern.eps",  width=800, height=800 )

# uncomment next line if you want to see the tk window
# main_window.mainloop()

এই নামের একটি ফাইলের ফলাফল "patten.eps"

প্যাটার্ন.এপস এর ফলাফল

চিত্র 1 : চিত্রিত মধ্যে উত্পন্ন ইপিএস খুলছে।

আপনি এটি এক্সটেনডস্ক্রিপ্ট, এসভিজিতে বা সরাসরি ইপিএস প্রোগ্রাম লিখে যা কিছু করা সহজ যা কিছু করতে পারেন (কয়েকটি উদাহরণের জন্য নীচে পরিশিষ্ট দেখুন)। সম্পদের জন্য নিম্নলিখিত পোস্টগুলি দেখুন:

PS : আমি জানি না যে এর স্ক্রিপ্টিংয়ের মূল্য উপযুক্ত কারণ এটি ঘোরানো সরঞ্জাম এবং Ctrl+ এর সাহায্যে এগুলিকে আঁকতে প্রায় 3 মিনিট সময় নেয়D

চিত্রকের মধ্যে প্যারামেট্রিক মিশ্রণ

  1. একটি বৃত্ত আঁক.
  2. এটি সদৃশ।
  3. চেনাশোনা মিশ্রিত করুন
  4. মেরুদণ্ডের প্রতিনিধিত্বকারী অন্য একটি বৃত্ত আঁকুন, এটি একটি বিন্দুতে কাটা
  5. মিশ্রণ এবং বৃত্ত উভয়ই নির্বাচন করুন এবং মেরুদণ্ড প্রতিস্থাপন করুন le মিশ্রিত করুন do
  6. অবজেক্ট → মিশ্রিত → মিশ্রিত বিকল্পগুলি ... বিয়োগ এক অবজেক্টের সাথে গোলকের সংখ্যা সামঞ্জস্য করুন ।
  7. স্পেন চেনাশোনা আকার এবং বিকল্পগুলি অনুলিপি করুন এবং সামঞ্জস্য করুন। সম্পন্ন

একটি আংটি

চিত্র 2 : উপরের পদ্ধতি সহ একটি রিং


পরিশিষ্ট 1: ম্যানুয়ালি লিখিত ইপিএস সহ

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 800 800
%%Title: pattern
%%Creator: joojaa
%%CreationDate:  2015-07-08
%%EndComments

/c {newpath 10 0 360 arc closepath fill} def
/cr {
    dup 8 mul 2 dict begin /i exch def /r exch 60 mul def 
    1 1 i {360 i div mul dup sin exch cos r mul exch r mul c} for 
    end
} def

400 400 translate
0 0 c
1 1 6 {cr} for
%%EOF

পরিশিষ্ট 2: এক্সটেন্ডস্ক্রিপ্ট উদাহরণ

#target illustrator

var doc = app.activeDocument; 

function circle(x,y) {
    doc.pathItems.ellipse(x+5,y-5,10,10);
}

function draw_circles(num, r){
    var step = (2.0*Math.PI)/num;
    for (var i = 0; i < num; i++) {
        var x = -200 + r * Math.sin(i*step);
        var y = 200 + r * Math.cos(i*step);
        circle(x, y);
    }
}

circle(-200,200);
for (var i = 1; i <= 6; i++) {
    draw_circles(i*8, i*30);
}

ধন্যবাদ - আমার কাছে টিকি উইন্ডো নেই, এটি যে প্যাটার্নটি পেয়েছিল তার কেবল উদাহরণ
টম

1
@ টম Thats কেন আমি বিকল্প তালিকাভুক্ত।
joojaa

1
এই যে দুর্দান্ত, আমি কোথাও পড়েছি যে পোস্টস্ক্রিপ্ট টিউরিং সম্পূর্ণ হয় তবে আমি এর আগে কাউকে আসলে কোড কখনও দেখিনি।
পিটার ওয়ান

9

আপনি যদি না বিন্দু যত্নশীল সারিবদ্ধ ...

ড্যাশড স্ট্রোক ব্যবহার করে আপনি ইলাস্ট্রেতে আপনার উদাহরণের সাথে খুব শীঘ্রই কিছু তৈরি করতে পারেন। সমানভাবে ব্যবধানযুক্ত রিংগুলি সহজেই আঁকতে, আমি পোলার গ্রিড সরঞ্জামটি ব্যবহার করব ।

পোলার গ্রিড সরঞ্জাম বিকল্প পোলার গ্রিড সরঞ্জাম ফলাফল

তারপরে এটি আপনার পছন্দ অনুসারে ফাঁকা ফাঁকা ফাঁকে রিংগুলিতে স্ট্রোক স্থাপনের বিষয়:

স্ট্রোক প্যানেল বিকল্প সারি সারি বিন্দু

প্রয়োজনে আরও ডট যুক্ত করতে আপনি প্রতিটি সারিতে অবশ্যই সূক্ষ্ম সুর করতে পারেন, পৃথক ব্যবধানের মান বাড়িয়ে বা হ্রাস করতে পারেন। ফাঁক বাক্স সক্রিয় করে, আপনি মানটি দ্রুত পরিবর্তন করতে আপনার স্ক্রোল হুইল ব্যবহার করতে পারেন। Ctrl / Cmdসূক্ষ্ম ইনক্রিমেন্টগুলিতে সামঞ্জস্য করতে স্ক্রোল করার সময় হোল্ড করুন

স্ট্রোক প্যানেল বিকল্প সারি সারি বিন্দু

এই পদ্ধতির সমস্যাটি হ'ল কিছু বিন্দুতে কিছুটা ওভারল্যাপ থাকতে পারে:

বিন্দু ওভারল্যাপ

এগুলি ম্যানুয়ালি সম্পাদনা করার প্রয়োজন হতে পারে যদি আপনার এগুলি নিখুঁত হওয়ার দরকার হয়। প্রতি সারিতে সর্বাধিক 1 টি ওভারল্যাপ হওয়া উচিত।


1
ভাল, মিশ্রণটি শক্ত
প্রান্তিককরণের

1
এটি একটি স্পিকার গ্রিল, হয় সে এটি কিছু অ্যালুমিনিয়ামের উপরে সিল্ক স্ক্রিনে নিয়ে যাচ্ছে এবং প্রতিটি চিহ্নের মধ্যে ম্যানুয়ালি ড্রিল করবে যার ক্ষেত্রে কিছুটা প্রশস্ত চিহ্নের বিষয়টি বিবেচিত হবে না বা সে DXF এ রূপান্তর করতে এবং সিএনসি মিল ব্যবহার করবে, এক্ষেত্রে সামান্য প্রশস্ত গর্ত কিছু হবে না।
পিটার ওয়ান

9

আপনি যদি না বিন্দু সারিবদ্ধ সম্পর্কে যত্ন ...

চিত্রকের বিকৃতি এবং রূপান্তর প্রভাবটি এই ধরণের পুনরাবৃত্তি প্যাটার্নের জন্য উপযুক্ত, তবে সেই সঠিক প্যাটার্নটি পেতে এটি কিছুটা টুইঙ্কিংয়ের প্রয়োজন। একটি বিন্দুযুক্ত রেখা দিয়ে শুরু করুন (আপনার উদাহরণের জন্য 11 টি বিন্দু দিয়ে)

স্ট্রোকের বিকল্পগুলি ফলক পাগলামির সীমা

এর মাধ্যমে একটি ট্রান্সফর্ম ইফেক্ট যুক্ত করুন Effect > Distort & Transform > Transform...

রূপান্তর প্রভাব বিকল্প সারি সারি বিন্দু

আপনি লক্ষ্য করবেন যে অভ্যন্তরের সারিগুলিতে অনেকগুলি বিন্দু রয়েছে। ম্যানুয়াল টুইঙ্কটি এখানে আসে তবে এটি আপনাকে বাকিগুলি খুঁজে বের করার পক্ষে যথেষ্ট পরিমাণে পাওয়া উচিত।


8

ইনস্কেপ ব্যবহার করুন:

  1. সহকেন্দ্রিক গাইড লাইনগুলি তৈরি করুন এবং সম পরিমাণে ঘোরাতে লাইনগুলিতে ডাবল ক্লিক করুন (আমি 30 ডিগ্রি ব্যবহার করেছি)।
  2. প্রস্থ এবং উচ্চতা ম্যানুয়ালি সেট করে এবং তাদের কেন্দ্রে সরানো সহ-কেন্দ্রিক অসম্পূর্ণ চেনাশোনাগুলির একটি সিরিজ তৈরি করুন।
  3. একটি ভরাট চেনাশোনা তৈরি করুন, এবং কয়েকবার অনুলিপি করুন।
  4. "সারি এবং কলামগুলি" সরঞ্জামটি এক সারি বিস্তৃত করে সমতুল্য ফাঁকা করে ছড়িয়ে দিতে ব্যবহার করুন
  5. চেনাশোনাগুলি গ্রুপ করুন এবং তারপরে এগুলি ঘোরান। শেষ পর্যন্ত এগুলি রাখুন যাতে গাইড চৌরাস্তা দিয়ে কেন্দ্রের লাইন থাকে।
  6. আবার কপি করে পেস্ট করুন।

এখানে চিত্র বর্ণনা লিখুন

এবং ফলাফল (অপের চিত্রের সাথে মিলিত করতে 22.5 ডিগ্রি ব্যবহার করে):

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.