আমি এর মতো স্পিকারের গর্তের প্যাটার্নটি তৈরি করতে চাই:
তবে আমি কোথা থেকে শুরু করব তা নিশ্চিত নই। ইলাস্ট্রেটর বা অনুরূপ সফ্টওয়্যারগুলিতে শ্রমসাধ্য অবস্থান ছাড়াই এটি অর্জন করা যেতে পারে?
আমি এর মতো স্পিকারের গর্তের প্যাটার্নটি তৈরি করতে চাই:
তবে আমি কোথা থেকে শুরু করব তা নিশ্চিত নই। ইলাস্ট্রেটর বা অনুরূপ সফ্টওয়্যারগুলিতে শ্রমসাধ্য অবস্থান ছাড়াই এটি অর্জন করা যেতে পারে?
উত্তর:
আমি আমার পদ্ধতিটি যুক্ত করব, যেহেতু এটি আমার কাছে সহজ সরল মনে হচ্ছে। মূলত, আপনি:
পাইথন লিপিটি এখানে (প্রয়োজনীয় 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
।
আমি বহন করে চলেছি এবং কয়েকটি "ঝরঝরে" বৈশিষ্ট্য যুক্ত করেছি, যেমন:
আপনি সহজেই এগুলি ছাড়তে পারেন, যেহেতু ইলাস্ট্রেটর ক্যানভাস সীমানার বাইরে অবজেক্টগুলি গোপন করে না এবং আপনাকে ক্যানভাসকে ম্যানুয়ালি আকার দিতে দেয়:
আপনি নিজেরাই ছবিটিতে তৈরি করেছেন, হাতে আছে কি নেই তা চিত্রটি এমন কি না তা আপনি নির্দিষ্ট করে বলতে পারেন না। আপনার যদি ইতিমধ্যে এই কোডটি থাকে তবে আপনি টিপি অ্যাপ্লিকেশন ক্যানভাসকে ইপিএস হিসাবে রফতানি করতে পারবেন এবং চিত্রকটিতে এটি খুলতে পারেন। আপনাকে যা করতে হবে প্রয়োজন আহবান 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
চিত্র 2 : উপরের পদ্ধতি সহ একটি রিং
%!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
#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);
}
ড্যাশড স্ট্রোক ব্যবহার করে আপনি ইলাস্ট্রেতে আপনার উদাহরণের সাথে খুব শীঘ্রই কিছু তৈরি করতে পারেন। সমানভাবে ব্যবধানযুক্ত রিংগুলি সহজেই আঁকতে, আমি পোলার গ্রিড সরঞ্জামটি ব্যবহার করব ।
তারপরে এটি আপনার পছন্দ অনুসারে ফাঁকা ফাঁকা ফাঁকে রিংগুলিতে স্ট্রোক স্থাপনের বিষয়:
প্রয়োজনে আরও ডট যুক্ত করতে আপনি প্রতিটি সারিতে অবশ্যই সূক্ষ্ম সুর করতে পারেন, পৃথক ব্যবধানের মান বাড়িয়ে বা হ্রাস করতে পারেন। ফাঁক বাক্স সক্রিয় করে, আপনি মানটি দ্রুত পরিবর্তন করতে আপনার স্ক্রোল হুইল ব্যবহার করতে পারেন। Ctrl / Cmdসূক্ষ্ম ইনক্রিমেন্টগুলিতে সামঞ্জস্য করতে স্ক্রোল করার সময় হোল্ড করুন
এই পদ্ধতির সমস্যাটি হ'ল কিছু বিন্দুতে কিছুটা ওভারল্যাপ থাকতে পারে:
এগুলি ম্যানুয়ালি সম্পাদনা করার প্রয়োজন হতে পারে যদি আপনার এগুলি নিখুঁত হওয়ার দরকার হয়। প্রতি সারিতে সর্বাধিক 1 টি ওভারল্যাপ হওয়া উচিত।
চিত্রকের বিকৃতি এবং রূপান্তর প্রভাবটি এই ধরণের পুনরাবৃত্তি প্যাটার্নের জন্য উপযুক্ত, তবে সেই সঠিক প্যাটার্নটি পেতে এটি কিছুটা টুইঙ্কিংয়ের প্রয়োজন। একটি বিন্দুযুক্ত রেখা দিয়ে শুরু করুন (আপনার উদাহরণের জন্য 11 টি বিন্দু দিয়ে)
এর মাধ্যমে একটি ট্রান্সফর্ম ইফেক্ট যুক্ত করুন Effect > Distort & Transform > Transform...
আপনি লক্ষ্য করবেন যে অভ্যন্তরের সারিগুলিতে অনেকগুলি বিন্দু রয়েছে। ম্যানুয়াল টুইঙ্কটি এখানে আসে তবে এটি আপনাকে বাকিগুলি খুঁজে বের করার পক্ষে যথেষ্ট পরিমাণে পাওয়া উচিত।
ইনস্কেপ ব্যবহার করুন:
এবং ফলাফল (অপের চিত্রের সাথে মিলিত করতে 22.5 ডিগ্রি ব্যবহার করে):