我正在尝试建立一个叫做bloch sphere的东西。这表示球形中半径为1.0的箭头形式的量子比特的状态。
我写了下面的代码。
new FormField<String>(
builder: (FormFieldState<String> state) {
return InputDecorator(
decoration: InputDecoration(
labelText: ‘Currency’,
labelStyle: TextStyle(
fontSize: 18.0,
fontWeight: FontWeight.bold,
color: Colors.green.shade700),
errorText: state.hasError ? state.errorText : null,
),
isEmpty: _currency == '',
child: new DropdownButtonHideUnderline(
child: new DropdownButton<String>(
style: TextStyle(
fontSize: 18.0,
color: Colors.black,
fontWeight: FontWeight.w500,
),
value: _currency,
isDense: true,
onChanged: (String newValue) {
setState(() {
_currency = newValue;
state.didChange(newValue);
});
},
items: _mapCurrency((String value) {
return new DropdownMenuItem<String>(
value: value,
child: new Text(value),
);
}).toList(),
),
),
);
},
validator: (val) {
return val != '' ? null : ‘Choose a Currency…’;
},
),
当我放置(θ,phi)=(30,0)时,箭头的尖端到达球体的表面。但是,当我把(θ,phi)=(30,30)时,箭头的尖端不在球体内。
您可以从下面的链接中查看当前情况的图像。
答案 0 :(得分:1)
我猜您在坐标之间执行转换的方式错误。 X
,Y
和Z
的计算应如下(wikipedia link):
X = np.sin(theta) * np.cos(phi)
Y = np.sin(theta) * np.sin(phi)
Z = np.cos(theta)
另外,numpy三角函数接受弧度值。因此,θ应在[0,pi]范围内,phi应在[0,2 * pi)范围内。要将度数转换为弧度,可以使用numpy.radians()
。